EJB基礎筆記(二)

magic_dreamer發表於2010-07-02
EJB基礎筆記(二)

第五章 會話Bean
會話 Bean 用於管理實體 Bean 和其它會話 Bean 的互動、訪問資源,它們通常代表客戶機執行任務。會話 Bean 對應於“模型-檢視-控制器”體系結構中的控制器,因為它們都封裝三層體系結構中的商業邏輯。
會話Bean有兩種基本型別:無狀態和有狀態。

5.2 無狀態會話Bean
無狀態會話 Bean 是沒有狀態的,它們更易於 EJB 管理,因此它們處理請求更快且使用較少資源。但是這種效能優點是要付出代價的;無狀態會話 Bean 很笨。它們記不住一個方法呼叫到另一個呼叫之間發生的事情。
// remote interface
public interface CreditService extends javax.ejb.EJBObject {
public void verify(CreditCard card, double amount) throws RemoteException, CreditServiceException;
public void charge(CreditCard card, double amount) throws RemoteException, CreditServiceException;
}
// home interface
public interface CreditServiceHome extends java.ejb.EJBHome {
public CreditService create() throws RemoteException, CreateException;
}
無狀態會話 Bean 沒有查詢方法,因為無狀態 bean 全都相同,而且不是持久的。換句話說,在資料庫中不能找到唯一的無狀態會話 Bean。因為無狀態會話 Bean 不是持久的,因此它們都是過渡服務。每個使用同一個會話 Bean 的客戶機都得到同一個服務。
public interface HotelClerkBean implements SessionBean {
InitialContext jndiContext;
public void ejbCreate() {}
...snip...

5.4 有狀態會話Bean
有狀態會話 Bean 專用於客戶機,並維護方法呼叫之間的對話狀態。
import javax.ejb.SessionBean;
import javax.naming.InitialContext;
public class HotelClerkBean implements SessionBean {
InitialContext jndiContext;
//conversational-state
Customer cust;
Vector resVector = new Vector();
public void ejbCreate(Customer customer) {}
cust = customer;
}
public void addReservation(Name name, RoomInfo ri,
Date from, Date to) {
ReservationInfo resInfo =
new ReservationInfo(name,ri,from,to);
resVector.addElement(resInfo);
}
...snip...

第六章 部署EJB技術

第七章 EJB客戶機

第八章 聯絡

第九章 總結

相關文章