会话 Bean 生命周期详解
1. 钝化与激活机制
在某些算法的作用下,容器会挑选出一个等待客户端下一次调用的实例,让其“小憩”一下。具体而言,容器会将该实例暂时移出内存,并把它的状态(如实例变量的值等)保存到二级存储中,随后创建一个新实例来服务新客户端,这个过程就叫做钝化(Passivation)。
在钝化之前,容器会调用实例的 ejbPassivate() 方法。不过,需要注意的是,处于事务中的会话 Bean 实例不能被钝化。
当客户端调用处于钝化状态的 Bean 实例的方法时,容器会将该实例重新加载到内存中,并调用 ejbActivate() 方法,以此告知实例重新初始化自身。而如果 Bean 在钝化状态下超时,容器会直接将其置为不存在状态,且不会调用 ejbRemove() 方法,因为激活实例再移除会浪费资源。
2. 无状态会话 Bean 生命周期
无状态会话 Bean 的生命周期较为简单,仅包含方法就绪状态和不存在状态。由于无状态会话 Bean 在方法调用之间不维护任何客户端特定信息,这使得它的实例与特定客户端解耦。容器会创建特定 Bean 类型的多个实例,例如 DiscountBean ,并将它们放入一个池中,这些实例都能平等地服务任何客户端的调用。
当客户端调用 Bean 的方法时,容器会从池中取出任意一个实例来处理该调用。实例处理完调用后会返回池中。对于同一客户端的另一个调用,所有实例同样有资格处理,因为它们都不与客户端保持会话状态。当需要节省内存时,容器可以选择将多个实例置为不存在
超级会员免费看
订阅专栏 解锁全文
36

被折叠的 条评论
为什么被折叠?



