0

我正在阅读有关 EJB 会话 Bean 的信息。我主要在春季和网站上工作,我们将会话保持在正常会话对象中。会话 bean 的文档说,如果我有一个购物车,我使用会话 bean?这是否意味着我不需要处理 JSP 级别的会话?并且这个会话 bean 也可以用来维护用户会话吗?

我不同意我在上一段最后写的内容。不是重复代码和额外使用内存吗?

请解释这个我根本没有得到的概念。

4

2 回答 2

0

Servlet 中的会话,由 Servlet 容器通过 HttpSession 对象进行维护,HttpSession 对象是通过 request 对象获取的。您不能真正实例化一个新的 HttpSession 对象,它不包含任何业务逻辑,但更多的是存储对象的地方。

EJB 中的会话是使用 SessionBeans 维护的。您设计的 bean 可以包含业务逻辑,并且可以被客户端使用。您有两种不同的会话 bean:有状态和无状态。第一个以某种方式与单个客户端连接。它维护该客户端的状态,只能由该客户端使用,当客户端“死亡”时,会话 bean 将“丢失”。

无状态会话 Bean 不维护任何状态,并且不能保证同一个客户端将使用同一个无状态 bean,即使是一个接一个的两个调用。无状态会话 EJB 的生命周期与有状态会话 EJB 的生命周期略有不同。EJB Container 是否负责准确了解如何跟踪每个会话并将请求从客户端重定向到正确的会话 Bean 实例。这样做的方式取决于供应商,并且是合同的一部分。

于 2012-06-29T06:44:10.327 回答
0

因此,可以将 EJB 定义为封装业务逻辑并处理事务和安全性的服务器端组件。它们还具有用于消息传递、调度、远程访问、Web 服务端点(SOAP 和 REST)、依赖注入、组件生命周期、带有拦截器的 AOP 等的集成堆栈。

会话 EJB 共有三种类型:

  1. 无状态:会话 bean 不包含方法之间的会话状态,任何实例都可以用于任何客户端。
  2. 有状态的:会话 bean 包含会话状态,必须为单个用户跨方法保留。
  3. Singleton:单个会话 bean 在客户端之间共享,支持并发访问。

在 Web 应用程序中,您通常会使用无状态 bean 来列出产品。然后,您将使用有状态 bean 将产品存储在购物车中。

希望这会有所帮助。

于 2012-06-29T06:50:39.977 回答