·@PostConstruct:当bean对象完成实例化后,使用了这个注释的方法会被立即调用。这个注释同时适用于
有状态和无状态的会话bean。
·@PreDestroy:使用这个注释的方法会在容器从它的对象池中销毁一个无用的或者过期的bean 实例之前调
用。这个注释同时适用于有状态和无状态的会话bean。
·@PrePassivate:当一个有状态的session bean实例空闲过长的时间,容器将会钝化(passivate)它,并把它的
状态保存在缓存当中。使用这个注释的方法会在容器钝化bean实例之前调用。这个注释适用于有状态的会话bean。
当钝化后,又经过一段时间该bean 仍然没有被操作,容器将会把它从存储介质中删除。以后,任何针对该bean
方法的调用容器都会抛出例外。
·@PostActivate:当客户端再次使用已经被钝化的有状态session bean时,新的实例被创建,状态被恢复。
使用此注释的session bean会在bean的激活完成时调用。这个注释只适用于有状态的会话bean。
·@Init:这个注释指定了有状态session bean初始化的方法。它区别于@PostConstruct注释在于:多个@Init
注释方法可以同时存在于有状态session bean 中,但每个bean实例只会有一个@Init注释的方法会被调用。这取
决于bean是如何创建的(细节请看EJB 3.0规范)。@PostConstruct在@Init之后被调用。
另一个有用的生命周期方法注释是@Remove,特别是对于有状态session bean。当应用通过存根对象调用使用了
@Remove注释的方法时,容器就知道在该方法执行完毕后,要把bean实例从对象池中移走。
我写了一个statful Session bean.需要等待9分钟左右,容器才会钝化此会话Bean。。。。。
然后经证明,statfulBean的钝化时间是10分钟,完全销毁差不多要15分钟。。。Jboss是个愚蠢的东西
还没有找到相应的文档说明这一问题的,因为钝化后GC不会马上来收,这就导致可能会有潜在的内存泄露问题了。
我只用到JBoss,不知道有没有用Weblogic的朋友是不是也有同样的问题?