Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
从WebSocket@ServerEndpoint使用CDI@SessionScoped bean_Websocket_Cdi - Fatal编程技术网

从WebSocket@ServerEndpoint使用CDI@SessionScoped bean

从WebSocket@ServerEndpoint使用CDI@SessionScoped bean,websocket,cdi,Websocket,Cdi,在web应用程序中,用户使用servlet HTTP会话。一些数据存储在CDI@SessionScoped bean中。在后面的一些页面中,用户浏览器和服务器之间执行WebSocket通信 对于GlassFish 4,当使用GlassFish 4.0从WebSocket@ServerEndpoint注入的@SessionScoped CDI bean时,我会收到一条错误消息: org.jboss.weld.context.contextNotActivieException:weld-00130

在web应用程序中,用户使用servlet HTTP会话。一些数据存储在CDI@SessionScoped bean中。在后面的一些页面中,用户浏览器和服务器之间执行WebSocket通信

对于GlassFish 4,当使用GlassFish 4.0从WebSocket@ServerEndpoint注入的@SessionScoped CDI bean时,我会收到一条错误消息: org.jboss.weld.context.contextNotActivieException:weld-001303作用域类型javax.enterprise.context.SessionScoped没有活动上下文

在JSP/servlet类型的请求中,使用@SessionScoped CDIBean是可以的,但在WebSocket@ServerEndpoint中则不行

还请注意,从@ServerEndpoint使用@Singleton CDIBeans可以很好地工作,因此这不是一个通用依赖项注入问题

也许我做错了什么

所以我的问题是@SessionScoped CDIBeans可以从WebSocket@ServerEndpoint bean的方法中使用吗?如果是,如何进行


谢谢您的时间。

这可能不是完全相同的问题,但问题非常相似,这里的答案适用。基本上,正如@JoakimErdfelt所指出的,websocket对CDI的支持充其量是有问题的。websocket规范忽略了提及哪些作用域是活动的

开箱即用,这是Tyrus支持的:


如果需要,可以扩展它以启动会话范围(供参考,Apache DeltaSpike的CDI上下文控件),但由于协议不同,它将是一个不同于已通过HTTP建立的会话。

问题重复到(简短的回答是,
javax.websocket
中对CDI的支持没有得到很好的支持、定义和规范)我认为这不是同一个问题。我更新了我的帖子,提到@Singleton CDI bean的注入效果很好。这确实是一个范围问题。是的,我认为每个人都对这个差距感到有点不安。希望我们能在MR中解决这个问题(它影响EE规范+WebSocket规范)。仍然不受支持,似乎不受支持??