我创建了一个向用户显示文档的 Web 应用程序。 该应用程序使用 RESTFUL Webservices 从后端获取此文档。
负责创建/加载文档的 EJB 需要在 http session 中存储一些信息。 (需要确定文档打开的时间、加载时间等, session 中存储数据以确定哪个浏览器窗口中的哪个文档被关闭或更新)
我获取此信息的解决方案如下所示(在 SSB 和另一个 SSB 的拦截器中):
@Context
private HttpServletRequest request;
...
this.request.getSession().getAttribute(WINDOW_SET);
此解决方案有效。 我不确定这是否是“正确的方法”,因为据我到目前为止的研究,@Context 并不真正适合在 EJB 中使用。
我不能只将所需的信息作为参数传递给 EJB,因为这不适用于所使用的拦截器。
问题是: 这是构建此功能的有效方法吗? 如果不是,这个解决方案有哪些缺点以及如何做得更好?
最佳答案
没有。 bean 被注释为无状态:它必须是无状态的。您甚至不能期望请求或 session 的注入(inject)能够起作用。
“无状态 session bean”的实际含义是另一个问题,我从 1998 年左右就开始思考这个问题。
关于java - 通过 @Context 在无状态 session Bean 中使用 http session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29205573/