·@PostConstruct:當(dāng)bean對象完成實例化后,使用了這個注釋的方法會被立即調(diào)用。這個注釋同時適用于
有狀態(tài)和無狀態(tài)的會話bean。

·@PreDestroy:使用這個注釋的方法會在容器從它的對象池中銷毀一個無用的或者過期的bean 實例之前調(diào)
用。這個注釋同時適用于有狀態(tài)和無狀態(tài)的會話bean。

·@PrePassivate:當(dāng)一個有狀態(tài)的session bean實例空閑過長的時間,容器將會鈍化(passivate)它,并把它的
狀態(tài)保存在緩存當(dāng)中。使用這個注釋的方法會在容器鈍化bean實例之前調(diào)用。這個注釋適用于有狀態(tài)的會話bean。
當(dāng)鈍化后,又經(jīng)過一段時間該bean 仍然沒有被操作,容器將會把它從存儲介質(zhì)中刪除。以后,任何針對該bean
方法的調(diào)用容器都會拋出例外。

·@PostActivate:當(dāng)客戶端再次使用已經(jīng)被鈍化的有狀態(tài)session bean時,新的實例被創(chuàng)建,狀態(tài)被恢復(fù)。
使用此注釋的session bean會在bean的激活完成時調(diào)用。這個注釋只適用于有狀態(tài)的會話bean。

·@Init:這個注釋指定了有狀態(tài)session bean初始化的方法。它區(qū)別于@PostConstruct注釋在于:多個@Init
注釋方法可以同時存在于有狀態(tài)session bean 中,但每個bean實例只會有一個@Init注釋的方法會被調(diào)用。這取
決于bean是如何創(chuàng)建的(細節(jié)請看EJB 3.0規(guī)范)。@PostConstruct在@Init之后被調(diào)用。

另一個有用的生命周期方法注釋是@Remove,特別是對于有狀態(tài)session bean。當(dāng)應(yīng)用通過存根對象調(diào)用使用了
@Remove注釋的方法時,容器就知道在該方法執(zhí)行完畢后,要把bean實例從對象池中移走。

我寫了一個statful Session bean.需要等待9分鐘左右,容器才會鈍化此會話Bean。。。。。
然后經(jīng)證明,statfulBean的鈍化時間是10分鐘,完全銷毀差不多要15分鐘。。。Jboss是個愚蠢的東西
還沒有找到相應(yīng)的文檔說明這一問題的,因為鈍化后GC不會馬上來收,這就導(dǎo)致可能會有潛在的內(nèi)存泄露問題了。

我只用到JBoss,不知道有沒有用Weblogic的朋友是不是也有同樣的問題?