跳到主要内容

简述EJB 的激活机制 ?

参考答案:

EJB(Enterprise JavaBeans)的激活机制主要涉及到有状态会话Bean(Stateful Session Bean)。这种Bean的激活机制设计用来有效地管理Bean实例的生命周期以及内存资源的使用。

当一个有状态的会话Bean被客户端调用时,如果EJB Object发现自己没有绑定对应的Bean实例,它会尝试从去激活Bean存储中恢复(激活)此实例。这个过程是通过序列化机制实现的,即Bean的实例状态被序列化并存储在硬盘上,当需要时再从硬盘中恢复。

具体来说,当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例,它会根据其Cache大小来决定是否从去激活Bean存储中恢复实例。Cache大小决定了内存中可以同时存在的Bean实例的数量。恢复实例的过程遵循MRU(Most Recently Used)或NRU(Least Recently Used)算法,即最近使用或最少使用的实例会优先被恢复。

状态变迁前,会调用对应的ejbActiveejbPassivate方法。ejbActive方法在Bean实例被激活时被调用,可以执行一些必要的初始化操作。而ejbPassivate方法则在Bean实例被去激活时被调用,用于保存Bean的状态以便后续恢复。

这种激活机制有助于在EJB服务器需要节省资源时,有效地管理Bean实例的生命周期和内存使用。通过将不活跃的Bean实例序列化到硬盘并释放其占用的内存,可以确保系统在高负载时仍能保持稳定的性能。同时,当客户端再次请求该Bean时,可以迅速地从硬盘中恢复其状态,从而提供快速且连续的服务。