將 Enterprise Bean 程式碼從 1.1 版移轉到 2.1 版

雖然 EJB 2.1 相容模組中可能混雜著 1.x 版和 2.1 版 Bean,但 Enterprise JavaBeans (EJB) 2.1 相容 Bean 只能組合在 EJB 2.1 相容模組中。

關於這項作業

EJB 2.1 版規格規定在 EJB 儲存器啟動 findByMethod 查詢之前,已列入現行交易中的所有 Enterprise Bean 的狀態,必須與持續儲存庫同步化。 (為了查詢現行資料,此動作有其必要。)如果 1.1 版 Bean 重新組合到 EJB 2.1 相容模組,EJB 儲存器會同步處理 1.1 版 Bean 的狀態,以及 2.1 版 Bean 的狀態。 因此,即使 1.1 版 Bean 的應用程式碼未變更,您也可能發現應用程式行為有些許改變。

下列資訊通常適用於目前符合 EJB 規格 1.1 版的任何 Enterprise Bean。 如需有關以 Rational Application Developer 工具產生的 Bean 該如何移轉程式碼的相關資訊,請參閱該產品的說明文件。

程序

  1. 在採用儲存器管理的持續性 (CMP) 1.x 版的 Bean 中,以抽象 get 和 set 方法取代每一個 CMP 欄位。 如此一來,每一個 Bean 類別一定會變成抽象類別。
  2. 在採用 CMP 1.x 版的 Bean 中,將所有出現的 this.field = value 變更為 setField(value)
  3. 在每一個 Bean 中,為主要索引鍵建立抽象 get 和 set 方法。
  4. 在採用 CMP 1.x 版的 Bean 中,為每一個 finder 方法建立「EJB 查詢語言」陳述式。
    註: 在 Application Developer 第 5 版中,「EJB 查詢語言」有下列限制:
    • 如果「EJB 查詢語言」查詢所涉及的 Bean 具有與其他 Bean 之間的關係所構成的索引鍵,這些查詢在部署時會看似無效並造成錯誤。
    • 「IBM EJB 查詢語言」支援以各種方式延伸 EJB 2.1 規格,包括放寬一些限制、增加支援更多 DB2 函數等。 如果擔心不同供應商資料庫或 EJB 部署工具之間的可攜性,請嚴格遵守 EJB 2.1 規格第 11 章所述的指示,小心撰寫所有「EJB 查詢語言」查詢。
  5. 在採用 CMP 1.x 版的 Bean 的 finder 方法中,傳回 java.util.Collection 而不是 java.util.Enumeration。
  6. 更新非應用程式異常狀況的處理方式。
    • 如果要報告非應用程式異常狀況,請擲出 javax.ejb.EJBException 而不是 java.rmi.RemoteException。
    • 依需要修改回復行為:在 EJB 1.1 和 2.1 版中,Bean 實例擲出的所有非應用程式異常狀況,將會導致正在執行此實例的交易回復;實例會被捨棄。 在 EJB 1.0 中,如果實例擲出 java.rmi.RemoteException,儲存器並不會回復交易或捨棄實例。
  7. 更新由於應用程式異常狀況而導致的回復行為。
    • 在 EJB 1.1 和 2.1 版中,應用程式異常狀況不會造成 EJB 儲存器自動回復交易。
    • 在 EJB 1.1 版中,只有當實例對其 EJBContext 物件呼叫 setRollbackOnly() 之後,儲存器才會執行回復。
    • 在 EJB 1.0 版中,當應用程式異常狀況越過儲存器所啟動的交易界限時,儲存器必須回復交易。
  8. 將應用程式專用預設值的任何 CMP 設定更新為放在 ejbCreate 內(不使用廣域變數,因為 EJB 1.1 儲存器會將所有欄位設為通用預設值,因而改寫任何先前的應用程式專用預設值)。 此方法也適用於 EJB 1.0 CMP。

指出主題類型的圖示 作業主題



時間戳記圖示 前次更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_migr20
檔名:tejb_migr20.html