当前位置: 技术问答>java相关
Stateful Session Bean的生命周期问题
来源: 互联网 发布时间:2015-10-27
本文导语: 如果我不显式调用RemoteObject的remove方法,这个Bean是不是就永远存在啊? 如果这样,那岂不是很糟糕,但是我看到很多代码都没有显式调用remove啊 | 配置文件设的,有: 50 1000000 ...
如果我不显式调用RemoteObject的remove方法,这个Bean是不是就永远存在啊?
如果这样,那岂不是很糟糕,但是我看到很多代码都没有显式调用remove啊
如果这样,那岂不是很糟糕,但是我看到很多代码都没有显式调用remove啊
|
配置文件设的,有:
50
1000000
300
600
400
60
1
0.75
50
1000000
300
600
400
60
1
0.75
|
关于有状态会话BEAN的生命周期很特别,描述如下:
1:不存在状态---(client调用create())(容器调用Class.newInstance(),setSessionContext(),ejbCreate())--->进入方法就绪状态(此时可以为client服务)--->如果超时则容器将其销毁,回到不存在状态。
--->如果服务器要节省资源或遇到新事务开启,则释放资源,实例打回到不存在状态。序列化实例字段。(容器调用ejbPassivate()挂起)
--->事务等结束,重新找会资源,反序列化实例字段。建立一个新的BEAN实例(容器调用ejbActivate()激活)
--->容器调用ejbRemove()或客户显示调用remove()也会将BEAN打回到不存在状态。BEAN生命周期结束。
所以,虽然客户没有显示调用remove(),但发生以情况都会将bean回收。
1:不存在状态---(client调用create())(容器调用Class.newInstance(),setSessionContext(),ejbCreate())--->进入方法就绪状态(此时可以为client服务)--->如果超时则容器将其销毁,回到不存在状态。
--->如果服务器要节省资源或遇到新事务开启,则释放资源,实例打回到不存在状态。序列化实例字段。(容器调用ejbPassivate()挂起)
--->事务等结束,重新找会资源,反序列化实例字段。建立一个新的BEAN实例(容器调用ejbActivate()激活)
--->容器调用ejbRemove()或客户显示调用remove()也会将BEAN打回到不存在状态。BEAN生命周期结束。
所以,虽然客户没有显示调用remove(),但发生以情况都会将bean回收。