eclipse + JBoss 5 + EJB3开发指南(4):Session Bean中的注释方法

来源:互联网 发布:800源码 编辑:程序博客网 时间:2024/04/19 21:29

本文为原创,如需转载,请注明作者和出处,谢谢!

    有时需要在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:
  1. package service;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import javax.annotation.PostConstruct;  
  6. import javax.annotation.PreDestroy;  
  7. import javax.annotation.Resource;  
  8. import javax.ejb.PostActivate;  
  9. import javax.ejb.PrePassivate;  
  10. import javax.ejb.SessionContext;  
  11. import javax.ejb.Stateful;  
  12.   
  13. @Stateless  
  14. public class ShoppingCartBean implements ShoppingCart  
  15. {  
  16.     private List<String> shoppingCart = new ArrayList<String>();  
  17.     @Resource  
  18.     private SessionContext sessionContext;  
  19.       
  20.     public ShoppingCartBean()  
  21.     {  
  22.         System.out.println("constructor:" + sessionContext);  
  23.     }  
  24.     @PrePassivate  
  25.     public void MyPassivate()  
  26.     {  
  27.         System.out.println("passivate");  
  28.     }  
  29.     @PostConstruct  
  30.     public void init()  
  31.     {  
  32.         System.out.println(sessionContext.getInvokedBusinessInterface());                
  33.     }  
  34.     @PreDestroy  
  35.     public void destory()  
  36.     {  
  37.         System.out.println("destory");  
  38.     }  
  39.     @PostActivate  
  40.     public void start()  
  41.     {  
  42.         System.out.println("start");  
  43.     }  
  44.     @Override  
  45.     public void addCommodity(String value)  
  46.     {  
  47.           
  48.         shoppingCart.add(value);  
  49.     }  
  50.     @Override  
  51.     public List<String> getCommodity()  
  52.     {  
  53.         return shoppingCart;  
  54.     }