我刚遇到以下问题而无法找到答案:
@ServerEndpoint("/websocket/server")
public class ServerUpdateEndpoint implements Serializable {
...@OnOpen, OnMessage OnClose annoted methods, works fine...
@PostConstruct
public void start() {
logger.log(Level.INFO, "ServerUpdateEndpoint start");
}
@PreDestroy
public void stop() {
logger.log(Level.INFO, "ServerUpdateEndpoint stop");
}
}
当我用@Named生命周期回调@PostConstruct注释这个类时,@ PreDestroy永远不会被执行。
当我使用@Singleton注释时,它可以正常工作。
任何人都可以解释一下普通CDI注释的问题吗?
答案 0 :(得分:1)
它绝对只能有CDI注释。您需要对其进行注释@ApplicationScoped
并确保客户端连接到端点。您添加@Named
时是否给它了一个范围?