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。