對於從 EJB 1.1 轉換至 EJB 2.x 的專案,您必須採取一些步驟,將現有的 EJB 1.1 程式碼移轉至 EJB 2.x。
註: 只有 EJB 2.x 專案支援 EJB 2.x Bean(不過,2.x 專案也支援 1.1 Bean)。
- 對於任何 CMP 1.1 Bean,將每個 CMP 欄位換成抽象的 getXXX 和 setXXX 方法。
(如此則需將 Bean 類別抽象化。)
- 對於任何 CMP,請建立主鍵的抽象 getXXX 和 setXXX 方法。
- 對於任何 CMP 1.1 finder 方法,建立每個 finder 方法的 EJBQL(EJB 查詢語言)方法。
註: EJB 查詢語言在
Rational® Application
Developer 6.0 版中有下列限制:
- 如果「EJB 查詢語言」的查詢所包含的 EJB 具有由其他 EJB 之關係所組成的索引鍵,
則這些查詢會顯示為無效的,且會導致部署時期發生錯誤。
- IBM® EJB 查詢語言支援使用各種方式延伸 EJB 2.x 規格,其中包括放寬某些限制、新增更多 DB2® 功能的支援等等。
如果需要考慮跨越各種供應商資料庫或 EJB 部署工具的可攜性,請嚴格遵循 EJB 2.x 規格第 11 章說明的指示來小心撰寫所有「EJB 查詢語言」查詢。
- 對於任何 CMP 1.1 搜尋器,請傳回 java.util.Collection 而非
java.util.Enumeration。
- 對於任何 CMP 1.1 Bean,請將 ejbCreate() 及程式碼所有其他位置中所出現的 this.field = value 改成 setField(value)。
- 對於非應用程式的異常狀況,請更新您的異常狀況處理(回復行為):
- 擲出 javax.ejb.EJBException 而非 java.rmi.RemoteException,來報告非應用程式的異常狀況。
- 在 EJB 2.x 和 1.1 中,這個實例所擲出的所有非應用程式異常狀況都會造成回復執行這個實例的交易,且會捨棄這個實例。
- 針對應用程式異常狀況,更新您的異常狀況處理(回復行為):
- 在 EJB 2.x 和 1.1 中,應用程式異常狀況不會使儲存器自動回復交易。
- 在 EJB 1.1 中,只有在利用實例的 EJBContext 物件的 setRollbackOnly() 方法來呼叫實例時,儲存器才會執行回復。
- 更新特定應用程式預設值的任何 CMP 設定,使它成為在 ejbCreate 內(不使用廣域變數,因為 EJB 1.1 儲存器會先將所有欄位設為通用預設值,再呼叫 ejbCreate 來改寫任何先前的特定應用程式預設值)。