通过@Context在无状态会话Bean中使用http会话

时间:2015-03-23 08:07:31

标签: java java-ee ejb

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

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

我获取此信息的解决方案看起来像这样(在SSB和另一个SSB的拦截器中):

@Context
private HttpServletRequest request;

...

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

此解决方案正在运行。 我不确定这是"正确的方式"要做到这一点,因为直到现在我研究的@Context并不真正意味着在EJB中使用。

我不能只将所需信息作为参数传递给EJB,因为这对使用的Interceptor不起作用。

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

1 个答案:

答案 0 :(得分:0)

没有。豆被注释为无国籍:它必须是无国籍的。您不能指望注入请求或会话甚至工作。

“无国籍会话bean”实际意味着什么是另一个问题,也是我自1998年以来一直在思考的问题。