【问题标题】:Session Bean and JSP Session会话 Bean 和 JSP 会话
【发布时间】:2012-06-29 06:35:53
【问题描述】:

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

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

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

【问题讨论】:

    标签: jsp session jakarta-ee ejb


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢sandeep,但是在应用程序中使用会话bean 有什么好处,我一直将用户会话存储在HTTPSession 对象中。如果我使用 EJB,我为什么要使用 sessionbean,这样做有什么好处,遵循这种方法有什么问题。
    • 关于 bean 的事情是您将业务逻辑移出 servlet。这是一个主要好处,因为您现在可以跨 servlet 重用逻辑,并且 EJB 可以与一系列其他技术进行交互。
    • 我已经停止使用会话 bean,因为它的开销更大。使用会话bean的优点是,它支持事务服务、安全服务、生命周期管理、RMI、实例缓存;线程安全等,因此无需为这些服务编写代码。基于 Web 和非基于 Web 的客户端都可以使用它。可以处理单个 http 请求的多个操作。
    • 所以基本上 EJB 简单地充当服务层,因为我们在 Spring 框架中实现业务逻辑。非常感谢您清除我的概念。
    【解决方案2】:

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

    Sessions EJB 分为三种类型:

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

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      相关资源
      最近更新 更多