国产探花免费观看_亚洲丰满少妇自慰呻吟_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()方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双城市| 青神县| 林西县| 德江县| 泾阳县| 瑞金市| 泸州市| 昌平区| 乐安县| 赫章县| 柘城县| 武鸣县| 凭祥市| 贵州省| 浦北县| 深水埗区| 通州市| 英山县| 法库县| 兴隆县| 阳江市| 浙江省| 稷山县| 普宁市| 家居| 合川市| 临夏市| 射洪县| 慈利县| 神农架林区| 双峰县| 广东省| 汾阳市| 鄯善县| 增城市| 阿荣旗| 高平市| 夏河县| 阿勒泰市| 扶余县| 定兴县|