国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Enterprise JavaBeans導論3

2019-11-18 12:36:33
字體:
來源:轉載
供稿:網友

  會話bean
  會話bean是一種通過home interface創建并對客戶端連接專有的enterPRise bean.會話bean實例一般不與其它客戶端共享。這答應會話bean維護客戶端的狀態。會話bean的一個例子是購貨車,眾多顧客可以同時購貨,想他們自己的購貨車中加東西,而不是向一個公共的購貨車中加私人的貨物。定義一個會話bean
  可以通過定義一個實現javax.ejb.sessionBean接口的類來創建一個會話bean.該接口定義如下:
  
  public interface javax.ejb.SessionBean extends javax.ejb.EnterpriseBean {
  public void ejbActivate() throws RemoteException;
  public void ejbPassivate() throws RemoteException;
  public void ejbRemove() throws RemoteException;
  public void setSessionContext(SessionContext context)
  throws RemoteException;
  }
  
  javax.ejb.EnterpriseBean是一個空接口,是會話bean和實體bean的超類。
  
  會話bean的交換
  容器開發商可以實現把會話bean的實例從主存移到二級存儲中的交換機制,這可以增加一段時間內實例化的會話bean的總數。容器維護一個bean的時間期限,當某個bean的不活動狀態時間達到這個闕值,容器就把這個bean拷貝到二級存儲中并從主存中刪除。
  容器可以使用任何機制來實現bean的持久性存儲。最常用的方式是通過bean的串行化。Bean開發者在bean中應避免使用transient fields。EjbActivate()和ejbPassivate()用來維護這個fields值。
  
  活化和鈍化
  為了支持廠商提供會話bean的交換,規范定義了鈍化--把bean從主存轉移到二級存儲的過程,活化--把bean恢復到主存中去的過程。在SessionBean接口中聲明的EjbActivate()和ejbPassivate()方法,答應容器通知已經被活化的bean它將要被鈍化。Bean開發者可以用這些方法釋放和恢復處于鈍化狀態的bean所占有的值、引用和系統資源。一個可能的例子是數據庫連接,作為有限的系統資源,不能被鈍化的bean使用。
  有了這些方法就使得不必在使用transient.事實上,使用transient可能是不安全的,因為串行化機制自動地把值設為null或0。而通過ejbActivate()和ejbPassivate()方法顯式地設置這些fields更好一些。依靠Java的串性化機制把transient fields設成null也是不可移植的,因為當bean部署在不使用Java的串性化機制獲得持久性的EJB容器中時該行為會發生改變。假如容器不提供交換,那么這些方法將永遠不會被調用。
  當客戶端調用bean的商業方法時鈍化的bean被激活。當EJBObject收到方法調用的請求時,它通知容器需要活化的bean.當活化完成時,EJBObject代理對bean的方法調用。
  假如bean 參與一個事務,那么它不能被鈍化。把bean放在主存中更有效率,因為事務通常在很短的時間內完成。假如bean沒有鈍化前必須釋放或活化前必須重置的狀態,那么這些方法可置空。在大多數情況下,bean開發者不必在這些方法中做任何事。
  
  會話bean的狀態治理
  會話bean的部署描述符必須聲明該bean是有狀態或無狀態的。一個無狀態bean是在方法調用間不維護任何狀態信息的bean。通常,會話bean的優點是代替客戶端維護狀態。
  
  然而,讓會話bean無狀態也有一個好處。無狀態bean不能被鈍化。因為它不維護狀態,所以沒有需要保存的信息。容器可以刪除bean的實例。客戶端永遠不會知道無狀態bean的刪除過程。客戶端的引用是EJBObject.假如客戶端稍后又調用了一個商業方法,則EJBObject通知容器在實例化一個新的會話bean.因為沒有狀態,因此也沒有信息需要恢復。
  
  無狀態bean可以在客戶端間共享,只是在某一時刻只能有一個客戶端執行一個方法。因為在方法調用間沒有需要維護的狀態,所以客戶端可使用任何無狀態bean的實例。這使得容器可以維護一個較小的可服用bean的緩沖池,節省主存。因為無狀態bean在方法調用間不能維護狀態,因此從技術上講在home interface的create()方法不應有參數。在創建時向bean傳遞參數意味著在ejbCreate()返回時需要維護bean的狀態。而且,經由EJBObject調用商業方法的結果使得容器必須能重創建一個無狀態的bean.這時在開始創建bean時的參數就不存在了。廠商的安裝工具應該能檢查home interface的無狀態對話bean以保證其不包含帶參數的create()方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锡林郭勒盟| 镇原县| 孟州市| 大洼县| 中山市| 兴化市| 明水县| 利川市| 长海县| 甘孜县| 安陆市| 黑山县| 亳州市| 界首市| 江口县| 双流县| 古交市| 西和县| 宜黄县| 兴城市| 广安市| 南通市| 昌都县| 当阳市| 观塘区| 灌云县| 鄂伦春自治旗| 巴林左旗| 南平市| 湖北省| 大渡口区| 达孜县| 安龙县| 米易县| 阿拉善右旗| 沙河市| 苍南县| 涪陵区| 嘉义县| 平安县| 临夏县|