@ServerEndpoint可以是EJB但不能是普通的CDI bean吗?

时间:2013-12-14 20:57:51

标签: java java-ee ejb cdi ejb-3.1

我刚遇到以下问题而无法找到答案:

@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注释的问题吗?

1 个答案:

答案 0 :(得分:1)

它绝对只能有CDI注释。您需要对其进行注释@ApplicationScoped并确保客户端连接到端点。您添加@Named时是否给它了一个范围?