java - 通过 @Context 在无状态 session Bean 中使用 http session

标签 java jakarta-ee ejb

我创建了一个向用户显示文档的 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/

相关文章:

java - 在java中每行10个整数之后开始新行的更有效方法是什么?

java - Java EE 开发入门

java - GAE Java 8 标准环境中的服务

design-patterns - JPA继承和EJB多态性

Java 企业应用程序 - javax.ejb.EJBException

java - Android光标获取下一个

java - Maven Java 项目中文件搜索中的 IntelliJ : Hide . 类文件

java - JAVA中使用HttpServletRequest上传后文件被锁定

java - 无法注入(inject) javax.mail.Session,jboss 7.1.1

jsp - 如何使用客户端 JSP/Servlet 在另一台计算机上部署 session Bean