Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @ServerEndpoint可以是EJB,但不能是普通CDIBean?_Java_Jakarta Ee_Ejb_Cdi_Ejb 3.1 - Fatal编程技术网

Java @ServerEndpoint可以是EJB,但不能是普通CDIBean?

Java @ServerEndpoint可以是EJB,但不能是普通CDIBean?,java,jakarta-ee,ejb,cdi,ejb-3.1,Java,Jakarta 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.I

我刚才有一个问题,想不出答案:

@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 lifecycle callbacks@PostConstruct注释这个类时,@PreDestroy永远不会执行

当我用@Singleton注释它时,效果很好


有人能解释一下,这里的普通CDI注释有什么问题吗?

它肯定只能有CDI注释。您需要对其进行注释
@ApplicationScoped
,并确保客户端连接到端点。当您在tomEE上添加
@Named
时,您是否给了它一个作用域?

当使用@ApplicationScoped进行注释时,它不起作用,但可以使用EJBannotations@TomaszGawel这听起来像是一个特定于主题的问题。这就是为什么这被否决的原因吗?你是对的,但我不能取消选中,除非你修改答案。那么,也许可以添加一个关于托米的通知,我将撤回投票?好吗?一年前,当我发布这个答案时,TomEE不支持WebSocket。