gpt4 book ai didi

jakarta-ee - 为什么是无状态 session bean?

转载 作者:行者123 更新时间:2023-12-04 01:16:58 24 4
gpt4 key购买 nike

我正在阅读有关无状态 session bean 的信息,但无法理解它的用途。

摘自下面的太阳教程

“..因为无状态 session bean 可以支持多个客户端,它们可以为需要大量客户端的应用程序提供更好的可伸缩性”

在哪里使用无状态 session bean?什么样的应用程序使用它?

在“无状态 session bean”出现之前使用了什么机制来支持类似上下文中的多个客户端?

任何人都可以提供一些细节吗?

谢谢你!

最佳答案

老实说,很难为 SLSB 找到任何合理的用例。由于它们不持有任何状态(顾名思义),因此它们本质上应该是线程安全的。即使它们被容器池化。

另一方面,将它们用作安全的临时存储很诱人,因为它们保证是线程安全的(由于池化),您不需要任何同步或线程安全的集合。 但是考虑以下伪代码:

@Stateless
public class Slsb {
private int counter;

public void increment() {
++counter;
}

public int getCounter() {
return counter;
}
}

客户端:
@Resource
private Slsb slsb;

public void clientMethod() {
slsb.increment();
slsb.increment();
slsb.getCounter(); //???
}

这段代码(尽管它很粗俗)非常好,它不需要 AtomicInteger例如。

你期待什么结果?实际上,任何非负值都是可能的...任何调用 slsb可能由 Slsb 的不同实例提供服务同时,您的(以前使用的)实例可能已用于为不同的客户端提供服务。结论:在 SLSB 中存储状态是错误的,但出于某种原因,SLSB 被池化以避免在更改状态时出现线程问题 (?!?)。 Personally我更喜欢单例服务(类似 Spring),我从来没有想过 SLSB 的想法。是的,我知道 EJB 3.1 中的单例 EJB。

关于jakarta-ee - 为什么是无状态 session bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5809855/

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