有状态Bean和无状态Bean(EJB)

有状态的会话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 findUser(String Id) {  
return null;  
    }  
}

 

 

你可能感兴趣的:(状态bean与无状态bean)