当前位置:  开发笔记 > 编程语言 > 正文

为什么池无状态会话bean?

如何解决《为什么池无状态会话bean?》经验,为你挑选了1个好方法。

Java中的无状态bean不会在客户端的两次调用之间保持状态.因此,简而言之,我们可能会将它们视为具有业务方法的对象.每个方法都接受参数并返回结果.调用该方法时,会在执行堆栈中创建一些局部变量.当方法返回时,将从堆栈中删除本地,如果分配了一些临时对象,则无论如何都会对它们进行垃圾回收.

从我的观点来看,它与通过单独的线程调用同一单个实例的方法没有区别.那么为什么容器不能使用bean的一个实例而不是汇集其中的一个?



1> Will Hartung..:

合并做了几件事.

一,通过每个实例有一个bean,你可以保证线程安全(例如,Servlets不是线程安全的).

二,减少bean可能具有的任何潜在启动时间.虽然会话豆是"无国籍的",但它们只需要对客户端无国籍.例如,在EJB中,您可以将多个服务器资源注入会话Bean.该状态对bean是私有的,但是没有理由不能将它从调用保持到调用.因此,通过池化bean,您可以将这些查找减少到仅在创建bean时发生.

三,您可以使用bean池作为节流量的手段.如果池中只有10个Bean,那么您最多只能获得10个同时工作的请求,其余的将排队等候.


可能更清楚地说开发人员负责编写线程安全的servlet - 会有多个线程同时命中它.无状态会话bean不需要写成线程安全,因为容器已经保证了这一点(不会有多个线程同时执行;而是有多个bean,池化).
"一,通过每个实例有一个bean,你可以保证线程安全(例如,Servlets不是线程安全的)." 线程安全如何帮助无状态会话bean?
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有