我创建了一个向用户显示文档的Web应用程序。
该应用程序使用RESTFUL Web服务从后端获取此文档。

负责创建/加载文档的EJB需要一些存储在http会话中的信息。
(需要确定打开文档的时间,加载所需的时间等,在会话中存储数据以确定关闭或更新哪个浏览器窗口的文档)

我获取此信息的解决方案如下所示(在SSB和另一个SSB的拦截器中):

@Context
private HttpServletRequest request;


...

this.request.getSession().getAttribute(WINDOW_SET);


此解决方案正在工作。
我不确定这是否是“正确的方法”,因为据我到目前为止研究,@ Context并不是真正用于EJB。

我不能仅仅将所需的信息作为参数传递给EJB,因为这与所使用的Interceptor不兼容。

问题是:
这是构建此功能的有效方法吗?
如果不是,此解决方案的缺点是什么?如何更好地解决?

最佳答案

不会。Bean被注释为无状态:它必须是无状态的。您不能指望注入请求或会话甚至可以正常工作。

“无状态会话bean”的实际含义是另一个问题,自1998年以来,我一直在思考这个问题。

07-26 06:13