gpt4 book ai didi

java - session bean 是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 08:23:27 24 4
gpt4 key购买 nike

假设我在我的应用程序中部署了一个有状态 session bean。在我的客户端应用程序中,我尝试在 JNDI 的帮助下使用这个 session bean。在获得 bean 的 stub (不是实际的 bean 本身)并初始化该 bean 的某些字段后,我尝试使用 JNDI 第二次获取该 bean。

那么我将从应用服务器获取什么 bean?它是同一个 bean 两次还是我将使用该 bean 的第二个实例?如果我将两次获得同一个 bean,我如何从应用服务器获得同一个 bean 的两个不同实例?我只是对 bean 本身是什么感到困惑。如果可能的话提供一些资源。

最佳答案

假设您通过 JNDI 获得了对远程 bean 实例的引用。现在,假设您在远程 bean 上调用了两个业务方法,methodAmethodB

有状态和无状态 bean 之间的(主要)区别是:

  • 如果您的 bean 是无状态的,则 methodAmethodB 不能保证在服务器端运行在完全相同的 bean 实例上.
  • 如果您的 bean 是有状态的,则 methodAmethodB 保证在服务器端的完全相同的 bean 实例上运行。

从客户端来看,请注意,您所拥有的只是对服务器端一个晦涩对象的引用。在该“ stub ”上调用多个方法 - 即使它是同一个 stub 对象 - 也不能保证您将在服务器端处理完全相同的对象,除非您的 bean 是有状态的。

现在,更具体地说,回答您的问题。你说你在服务器上部署了一个有状态的 bean,你通过 JNDI 获得了一个 bean 实例的引用。为此,您必须在 EJB 的主界面上使用 create 方法。 create 方法向您返回一个 stub ,该 stub 映射到服务器端的一个实例。

下次你在 home 界面上调用 create 时,你会得到一个不同的 stub ,指向服务器端的一个不同的 bean .

如果你想保持对前一个 bean 的访问,那么你需要以某种方式保持对该远程对象的引用。

  • 如果您使用的是 EJB 2.x,则不应在任何地方“缓存” stub ;相反,获取对 bean 句柄的引用并将句柄存储在某处。
  • 如果您使用的是 EJB 3.x,那么您可以简单地存储对 stub 的引用。

关于java - session bean 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23655515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com