gpt4 book ai didi

java - 相同的无状态 session bean 在同一应用程序中工作不同

转载 作者:行者123 更新时间:2023-12-01 11:09:57 25 4
gpt4 key购买 nike

我创建了一个无状态 session bean(SLSB) 并从同一个 JVM 进行本地调用。我在 SLSB 中有一个 BO 局部变量,初始化时我设置了这个值,在下一次调用中我正在执行一些业务功能,但在下一次调用中我无法获取我在上一个调用中设置的值。称呼。 这似乎是根据 SLSB 功能,但我们应用程序的另一部分也有类似的功能。我已经确认两者都是 SLSB,并且 ejb-jar.xml 和 weblogic-ejb-jar.xml 中没有完成连接池(两者也相同),我也调试了这两个类,但不知道它在另一个类中如何工作类。

我想知道除了连接池之外,是否还有其他方法可以实现无状态 session bean 的状态完整行为。

最佳答案

这里重要的(如果稍微明显的)教训是:不要将状态存储在无状态 session bean 中。如果您想存储对话状态,请使用 stateful bean ,如果您想要共享状态,请使用 singleton bean 。您还可以使用 entity bean保持状态。

这在其他地方起作用的原因很可能与 bean 池有关。 EJB 容器主要使用 Bean 池来存储其无状态 Bean,因为这提供了最佳的性能和可伸缩性。当请求到来时,容器从池中选择一个 bean 来为其提供服务,将其从池中取出,该 bean 处理请求,然后放回池中。选择哪个 bean 取决于容器,因为理论上它们都是可以互换的。

如果您在 bean 中设置成员变量,然后(有时)稍后调用会查找设置为您的值的变量,这表明容器已返回相同的 bean 实例。这是非确定性的 - 它取决于服务器负载、池大小和容器的策略。

关于java - 相同的无状态 session bean 在同一应用程序中工作不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32493765/

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