【原創】eclipse + JBoss 5 + EJB3開發指南(4):Session Bean中的註釋方法

銀河使者發表於2009-05-31
本文為原創,如需轉載,請註明作者和出處,謝謝!

    有時需要在Session Bean中初始化和釋放一些資源。這些工作應該在SessionBean的@PostConstruct和@PreDestroy方法中進行。其中用 @PostConstruct註釋的方法在SessionBean的構造方法呼叫之後以後EJB容器在處理完一些其他工作後呼叫。用 @PreDestroy註釋的方法在SessionBean的物件例項被EJB容器銷燬之前呼叫。
    除此之外,當有狀態的SessionBean存在一定時間未被呼叫時,EJB容器會將該SessionBean物件鈍化(Passivate),也就是保 存在硬碟中。當再次訪問時,EJB容器會激法該SessionBean。在這兩種情況下,EJB容器會分別呼叫SessionBean的 @PrePassivate和@PostActivate方法。可以在@PrePassivate方法中將sessionbean中的資源儲存或釋放,如 開啟的資料庫連線等。在@PostActivate方法中可以恢復相應的資源。如下面的程式碼所示:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtpackage service;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.ejb.PostActivate;
import javax.ejb.PrePassivate;
import javax.ejb.SessionContext;
import javax.ejb.Stateful;

@Stateless
public class ShoppingCartBean implements ShoppingCart
{
    
private List<String> shoppingCart = new ArrayList<String>();
    @Resource
    
private SessionContext sessionContext;
    
    
public ShoppingCartBean()
    {
        System.out.println(
"constructor:" + sessionContext);
    }
    @PrePassivate
    
public void MyPassivate()
    {
        System.out.println(
"passivate");
    }
    @PostConstruct
    
public void init()
    {
        System.out.println(sessionContext.getInvokedBusinessInterface());              
    }
    @PreDestroy
    
public void destory()
    {
        System.out.println(
"destory");
    }
    @PostActivate
    
public void start()
    {
        System.out.println(
"start");
    }
    @Override
    
public void addCommodity(String value)
    {
        
        shoppingCart.add(value);
    }
    @Override
    
public List<String> getCommodity()
    {
        
return shoppingCart;
    }    
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-604497/,如需轉載,請註明出處,否則將追究法律責任。

相關文章