1. SessionBean的生命周期
无状态Session Bean: 不存在状态-->待命状态-->被销毁状态
不存在状态-->待命状态:
1)通过构造器创建EJB实例
2)执行依赖注入
3)执行@PostConstruct回调方法
待命状态-->被销毁状态
1)执行@PreDestroy回调方法
有状态Session Bean: 不存在状态-->待命状态(去活状态-->被销毁状态)-->被销毁状态
不存在状态-->待命状态:
1)通过构造器创建EJB实例
2)执行依赖注入
3)执行@PostConstruct回调方法
待命状态-->去活状态
1)执行@PrePassive回调方法
去活状态-->待命状态
1)执行@PostActivate回调方法
待命状态-->被销毁状态
1)客户端调用@Remove方法
2)执行@PreDestroy回调方法
#1. 开发EJB(Net Beans创建EJB Module, 项目名称:Lifecycle)
ShopService.java
packageorg.crazyit.service;import javax.ejb.*;import java.util.*;
@Remotepublic interfaceShopService {voidaddItem(String item);
MapshowDetail();voidremove();
}
ShopServiceBean.java
packageorg.crazyit.service;import java.util.*;importjavax.annotation.PostConstruct;importjavax.annotation.PreDestroy;import javax.ejb.*;
@Stateful(mappedName= "ShopService")public class ShopServiceBean implementsShopService {private Map buyInfo = new HashMap();public voidaddItem(String item) {//该物品已经购买过
if(buyInfo.containsKey(item)) {
buyInfo.put(item, buyInfo.get(item)+ 1);
}else{
buyInfo.put(item,1);
}
}public MapshowDetail() {returnbuyInfo;
}
@Removepublic voidremove() {
System.out.println("执行@Remove修饰的方法!");
}//下面定义了5个简单的生命周期方法
@Initpublic voidinit() {
System.out.println("执行@Init修饰的方法!");
}
@PostConstructpublic voidpostConstruct() {
System.out.println("执行@PostConstruct修饰的方法!");
}
@PrePassiva