会话bean的生命周期
来源:互联网 发布:淘宝上开企业店铺 编辑:程序博客网 时间:2024/04/30 10:53
无状态session bean生命周期
- 当bean实例不存在时,容器调用bean类的newInstance()方法,开始bean的生命周期
- 接着,容器调用bean的setSessionContext()方法,进而调用ejbCreate()方法。此时,bean就创建完毕,其方法可供调用了
- 当容器不需要该bean实例的时候,容器调用bean的ejbRemove()方法,删除该实例
而有状态session bean的生命周期则复杂一些,因为涉及到钝化、激活和事务
有状态session bean生命周期
- 当客户调用create(args)时,容器调用newInstance()方法,剩下来的创建过程同无状态session bean。
- 有状态session bean的方法执行分为事务与非事务两种情况
a. 不包含事务的方法在该bean处于ready状态后就可以执行
b. 包含事务的方法执行就比较复杂:
客户调用事务方法-->容器调用afterBegin()
客户提交方法-->容器调用beforeCompletion()
事务尝试提交,提交结果可能会成功,也可能会滚事务
事务结束-->容器调用afterCompletion() - 钝化与激活
a. 当一个bean很久没有被操作时,容器会决定该bean是否应该被钝化(从内存中擦除, 将状态信息记入存储介质。)
ps:有人说记录方法一定是java的序列化,其实不然。容器可以采取任何方法对状态信息进行记录。
b. 钝化后,又经过一段时间该bean仍然没有被操作,容器将会把它从存储介质中删除。以后,任何针对该bean方法的调用容器都会抛出java.rmi.NoSuchObjException
c. 若钝化后有针对此bean方法的调用,容器会激活该bean,将其重新加载入内存 - 当容器不需要该bean实例的时候,容器调用ejbRemove()方法,删除该实例
ejb容器只有在ejb实例不存在的情况下才会创建实例,否则,容器会在实例池中查找可用实例并复用。由于ejb不适那种轻量的,可以大量创建并删除的对象,所以,每次新实例的创建都会占用很大的资源。实例池的概念,以及钝化、激活,都是针对ejb这种特点而设计的。所以,当你的应用不需要分布式,安全,持久化以及事务处理时,你要考虑是否采取ejb这种重量级的数据层抽象。取而代之,诸如hibernate等轻量级的数据持久层,或者是直接使用JDBC来操作javabean这样谈不上量级的DAO都是可以选择的。
- 会话bean的生命周期
- 会话bean的生命周期
- EJB 会话Bean的生命周期
- EJB学习笔记 会话bean的生命周期
- ejb3.0学习之三:会话Bean的生命周期
- Ejb in action(五)——会话Bean的生命周期
- ejb3(session bean)会话bean的使用!!!
- 状态会话Bean和无状态会话Bean的区别
- bean的生命周期
- Session Bean 的生命周期
- Bean的生命周期
- Spring3 bean的生命周期
- Spring Bean的生命周期
- bean 实例的生命周期
- Bean的生命周期
- Spring Bean的生命周期
- bean的生命周期
- spring - bean的生命周期
- vp的键盘输入
- 退出VP场景时,程序崩溃的问题
- engine.h
- 恐怖呀,恐怖....
- Enterprise bean的开发
- 会话bean的生命周期
- 在JSP中用bean封装常用的功能
- eng_int.h
- Bean开发工具包
- 安装ACDSee 7指南
- 一年半前,周鸿祎的想法
- 卢乐群:如何练得一手好字?书法之道
- 一年半来,周鸿祎的做法,和结果
- ENGINE [OPENSSL DOCUMENT]