有状态Bean和无状态Bean(EJB)
程序员文章站
2024-02-22 22:27:04
...
有状态的会话bean
每个用户都持有自己特有的实例,再用户的生存期内,bean保存了用户的信息,即“有状态”,一旦用户灭亡(调用结束或实例结束),bean的生命周期也结束。
无状态会话bean
bean一旦实例化就会加载进入到会话池,各个用户都可以共用。即没有用户消亡,bean的生命周期也不一定结束,他可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一个用户的状态,所有也就无状态bean。
案例:
/**
* 有状态bean,有state,user等属性,并且user有存偖功能,是可变的。
*
* @author Peter Wei
*
*/
public class StatefulBean {
public int state;
// 由于多线程环境下,user是引用对象,是非线程安全的
public User user;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
/**
* 无状态bean,不能存偖数据。因为没有任何属性,所以是不可变的。只有一系统的方法操作。
*
* @author Peter Wei
*
*/
public class StatelessBeanService {
// 虽然有billDao属性,但billDao是没有状态信息的,是Stateless Bean.
BillDao billDao;
public BillDao getBillDao() {
return billDao;
}
public void setBillDao(BillDao billDao) {
this.billDao = billDao;
}
public List<User> findUser(String Id) {
return null;
}
}