首页 / 知识
关于java:为什么无状态会话bean是单线程的?
2023-04-13 08:07:00

Why stateless session beans are single threaded?根据我的理解,无状态会话bean用于编码业务逻辑。 它们不能在其实例变量中存储数据,因为它们的实例被多个请求共享。 因此,它们似乎更像是Singleton类。 但是,不同之处在于,它包含针对每个请求创建(或从池中重用)无状态会话Bean的单独实例。 谷歌搜索之后,我发现Java EE规范说它们是单线程的。 但是我不知道为什么将指定为单个线程的原因? 由于TX上下文,SLSB是单线程的,Principal在调用时与Bean实例相关联。这些bean被池化,除非达到最大池大小,否则将在单独的线程中处理(取决于供应商)。 如果将SLSB设计为线程安全的,则每次调用都将看起来像servlet doGet / Post,其请求信息包含Tx Context,Security Context info等。因此,至少代码看起来是干净的(取决于开发人员)。 无状态会话Bean是单线程的主要原因是使其对于容器具有高度可伸缩性。容器可以对运行时环境进行很多简化的假设。第二个原因是使开发人员的工作更加轻松,因为开发人员不必担心其业务逻辑中的任何同步或重新进入,因为永远不会在另一个线程上下文中调用Bean。 我记得在原始EJB 1.0规范的评论中讨论的推理。我将看一下规范的目标部分。有关规范的列表,请参见http://java.sun.com/products/ejb/docs.html。 |
最新内容
相关内容
Python如何使用https请求
Python如何使用https请求,代码,包装,培训,模块,底层,定义,以上,协议,操作,功能,python使用https请求代码如下:importurllibimporthttplibheadepython请求头如何自定义?
python请求头如何自定义?,培训,类型,内容,头部,字典,实例,文本,以前,以上,参数,python请求头如何自定义?1、说明要自定义请求头,可以使用heade关于c#:在代码/“刷新”请求中设置AS
关于c#:在代码/“刷新”请求中设置ASP.net执行超时,关于c#:在代码/“刷新”请求中设置ASP.net执行超时,用户,页面,我会,问题是,Set ASP.nHttpOnly cookie如何处理AJAX请求?
HttpOnly cookie如何处理AJAX请求?,HttpOnly cookie如何处理AJAX请求?,站点,访问限制,访问,work,How do HttpOnly cookies work with A关于启动:启动后寄存器的状态
关于启动:启动后寄存器的状态,关于启动:启动后寄存器的状态,寄存器,加载,地址,内容,State of Registers After Bootup我正在x86机器上关于asp.net:处理原始HTTP请求内容
关于asp.net:处理原始HTTP请求内容,关于asp.net:处理原始HTTP请求内容,服务,解决方案,我与,中做,Process raw HTTP request content我关于apache:mod_rewrite规则,用于重
关于apache:mod_rewrite规则,用于重定向除一条特定路径以外的所有请求,关于apache:mod_rewrite规则,用于重定向除一条特定路径以外的所如何在SQL中请求随机行?
如何在SQL中请求随机行?,如何在SQL中请求随机行?,请求,执行,操作,是在,How to request a random row in SQL?如何在纯SQL中请求随机行(关于c#:如果路径受保护,请求Windows V
关于c#:如果路径受保护,请求Windows Vista UAC提升?,关于c#:如果路径受保护,请求Windows Vista UAC提升?,应用程序,提升,提示,选择,Request W关于多线程:C ++中单线程的线程安全
关于多线程:C ++中单线程的线程安全惰性构造,关于多线程:C ++中单线程的线程安全惰性构造,线程安全,方法,线程,对象,Thread safe lazy关于tfs:MSF中的CMMI中的错误和更改
关于tfs:MSF中的CMMI中的错误和更改请求之间有什么区别?,关于tfs:MSF中的CMMI中的错误和更改请求之间有什么区别?,评估,模板,我在,以供,W没有业务逻辑层的ASP.Net 2.0应用
没有业务逻辑层的ASP.Net 2.0应用程序?,没有业务逻辑层的ASP.Net 2.0应用程序?,应用程序,业务逻辑,数据存储,存储过程,ASP.Net 2.0 App