欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

有状态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;  
    }  
}