Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么无状态会话bean是单线程的?_Java_Ejb - Fatal编程技术网

Java 为什么无状态会话bean是单线程的?

Java 为什么无状态会话bean是单线程的?,java,ejb,Java,Ejb,据我所知,无状态会话bean用于编码业务逻辑。它们不能在实例变量中存储数据,因为它们的实例由多个请求共享。所以他们看起来更像是独生子女。然而,区别在于contain为每个请求创建(或从池中重用)无状态会话bean的单独实例 在谷歌搜索之后,我可以找到理由,JavaEE规范说它们应该是单线程的。但是我无法理解为什么被指定为单线程的原因?SLSB是单线程的,因为TX上下文,主体在被调用时与bean实例相关联。这些bean是池化的,除非达到最大池大小,否则将在单独的线程中处理(取决于供应商) 如果SL

据我所知,无状态会话bean用于编码业务逻辑。它们不能在实例变量中存储数据,因为它们的实例由多个请求共享。所以他们看起来更像是独生子女。然而,区别在于contain为每个请求创建(或从池中重用)无状态会话bean的单独实例


在谷歌搜索之后,我可以找到理由,JavaEE规范说它们应该是单线程的。但是我无法理解为什么被指定为单线程的原因?

SLSB是单线程的,因为TX上下文,主体在被调用时与bean实例相关联。这些bean是池化的,除非达到最大池大小,否则将在单独的线程中处理(取决于供应商)


如果SLSB被设计成线程安全的,那么每个调用看起来都像一个servlet doGet/Post,请求信息包含Tx上下文、安全上下文信息等,因此至少代码看起来很干净(依赖于开发人员)

无状态会话bean是单线程的主要原因是使它们对于容器具有高度可伸缩性。容器可以对运行时环境进行许多简化假设。第二个原因是使开发人员的工作更轻松,因为开发人员不必担心业务逻辑中的任何同步或重新进入,因为bean永远不会在另一个线程上下文中调用

我记得在回顾最初的EJB1.0规范时讨论的推理。我将查看规范的目标部分。有关规格列表,请参阅