EJB 中stateless、stateful 会话bean的区别
来源:互联网 发布:淘宝二手雷蛇耳麦 编辑:程序博客网 时间:2024/06/07 00:39
对于很多EJB的初学者,很多时候对有状态、无状态会话bean有一些误解。我给大家简单的介绍一下
现实中,很多朋友对两种session bean存在误解,认为有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用,而认为无状态是每次调用实例化一次,不保留用户信息。仔细分析并用实践检验后,你会发现,事实恰好相反:
有状态和无状态会话bean的本质区别是它们的生命期。
首先解释一个下面要用到的概念--用户:session bean 的用户实际上就是直接调用ejb的类的实例,甚至是这个实例的某个方法。同一个类的不同实例对于session bean 来说是不同的用户。
1)有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。生命周期我们可以用web中context去简单认识,比如session、request等。在这个生命周期内,用户只会得到一个特定的stateful会话bean。
2)无状态会话bean :bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean 的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。但无状态会话bean 并非没有状态,如果它有自己的属性(变量),那么这些变量就会受到所有调用它的用户的影响,这是在实际应用中必须注意的。
这两种bean的使用场合简析:
1)有状态会话bean:用于跟踪用户数据,它可以在分布式中被缓存和传递,只要生命周期未被销毁(如session会话,前提是此会话bean被session会话管理),那么此bean可以在应用中随时获取,且数据时被同步更新的。。它就像你的“妻子”,你要你还“爱她”,她会随你“一生”
场合:用户登录权限切片控制,购物车等
2)无状态会话bean:这里你需要用servlet的思想去认识它,它就想servlet一样,为上层调用提供服务,并且是线程池的形式存在。当服务调用结束(如:获取web 服务,查询站点数据统计),无状态会话bean可能被销毁但也能继续存在,取决于线程池饱和度,但它不会为你保存任何和你的调用有“个人私情”的数据。你就认为他是一个servlet,它是提供共享服务的,它不是“老婆”,更像给你送邮件的“邮递员”,你们直接的交易,只是在你需要的时候,并以及结束。
现在你明白了吗??别搞混了额,别把“邮递员”当“老婆”,但更不希望你把“老婆”当“邮递员”。。。。
- EJB 中stateless、stateful 会话bean的区别
- 歪解stateful session bean 和 stateless session bean的区别。
- Session Bean 与 Entity Bean 的区别?Stateful Session Bean 与 Stateless Session Bean 的区别?
- Spring Stateful & Stateless bean
- Stateless Session Bean 与Stateful Session Bean 的比较
- EJB中有状态会话Bean 和 无状态会话Bean 的区别
- EJB中有状态会话Bean 和 无状态会话Bean 的区别
- 【EJB2+JBOSS】Stateless Bean和Stateful Bean
- EJB有状态和无状态会话Bean的区别
- EJB 3会话bean与Spring的区别
- EJB 会话Bean的生命周期
- EJB有状态的会话Bean和无状态的会话Bean的区别
- 对EJB3 Stateless和Stateful的认识
- 对EJB3 Stateless和Stateful的认识
- EJB中有状态会话Bean的理解
- IPv6地址自动配置中的有状态(stateful)和无状态(stateless)的区别
- EJB 3.0中会话Bean,实体Bean,消息驱动Bean的作用和例子
- EJB 3.0中会话Bean,实体Bean,消息驱动Bean的作用和例子
- xcode 常见错误解决方案
- IOS常用控件及编译器设置
- 锁定TextBox,ComboBox的方法
- readyState的四种状态的解析
- 如何将tomcat内自己的网站在外部让别人访问
- EJB 中stateless、stateful 会话bean的区别
- [Linker Fatal error] Unable to open file 'PROXIES.OBJ'
- MFC容器类CArray,CList
- 使用PyInstaller2将Python脚本转化为可执行文件(下-进阶使用)(转载自博客园balian)
- android已经导入jar包后运行找不到相关类
- android webview 设置
- 黑马程序员--String基础学习笔记
- 黑马程序员_java入门_IO流_5(文件概述)
- [Python]入门教程(二):Python中的一些基本概念