@PostConstruct 在简单的@Singleton @Startup bean 上调用了两次

@PostConstruct called twice on simple @Singleton @Startup bean

我的问题是 @PostConstruct 被调用了两次,尽管它不应该被调用。我搜索了很多,发现了球衣 https://java.net/jira/browse/JERSEY-1883?filter=-3 的类似问题。然而,我试图做一个小例子,即使没有任何杂音,它显然仍然会导致问题。

import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;

@Singleton
@Startup
public class TestSingleton {

  @PostConstruct
  public void init() {
    System.out.println("How many times am I being called?");
  }
}

配置

有什么想法吗?

@PostConstruct —在创建 bean 实例后立即调用。 你可以看到这个: @Startup @Singleton instantiated twice in WebLogic (EJB 3.1)

我通过使用 @PreDestroy 或应用程序服务器的 Publish 解决了这个问题。

问题是"normal"。在服务器启动后使用 Eclipse 作为 IDE 应用程序将再次发布。因此,您只会看到一条 @PreDestroy 的日志消息,但会看到两条 @PostConstruct

更改内容和之后发布也是如此。在这里你应该只能看到一次来自 @PostConstruct 的消息。

那你就知道万事大吉了