根据我的理解,无状态会话Bean用于编写业务逻辑。它们不能在实例变量中存储数据,因为它们的实例由多个请求共享。因此它们更像单例类。然而,不同之处在于容器为每个请求创建(或从池中重新使用)无状态会话Bean的单独实例。
经过谷歌搜索后,我找到了一个解释,Java EE规范规定它们应该是单线程的。但我不知道为什么它们被指定为单线程?
经过谷歌搜索后,我找到了一个解释,Java EE规范规定它们应该是单线程的。但我不知道为什么它们被指定为单线程?
SLSB是单线程的,因为TX上下文与Principal在调用时与bean实例关联。这些bean被池化,除非达到最大池大小,否则将在单独的线程中处理(供应商相关)。
如果SLSB被设计成线程安全的话,每个调用都会像servlet doGet/Post一样,请求信息包含Tx上下文、安全上下文信息等。因此,至少代码看起来很干净(开发者相关)。