EJB 1.1 から EJB 2.x にプロジェクトを変換する場合、
既存の EJB 1.1 コードを EJB 2.x にマイグレーションするステップを行う必要があります。
このタスクについて
注: EJB 2.x Bean は、EJB 2.x プロジェクトでのみサポートされます
(ただし、2.x プロジェクトは 1.1 Bean もサポートします)。
- CMP 1.1 Bean について、各 CMP フィールドを getXXX および setXXX の抽象メソッドによって置換します。
(その後で、Bean クラスを抽象化する必要があります。)
- CMP について、主キーに getXXX および setXXX の抽象メソッドを作成します。
- CMP 1.1 Finder メソッドについて、Finder メソッドごとに EJBQL (EJB 照会言語) メソッドを作成します。
注: バージョン 8.5.x V6.0 での EJB 照会言語には、以下の制限があります。
- 他の EJB との関係で構成されるキーを持つ EJB を含む EJB 照会言語の照会は、
無効と表示され、デプロイメント時にエラーが発生します。
- IBM® EJB 照会言語サポートは、さまざまな方法で EJB 2.x 仕様を拡張しています。
いくつかの制約事項が緩和されており、より多くの DB2® 関数がサポートされています。
さまざまなベンダーのデータベース間または EJB デプロイメント・ツール間の移植性に問題がある場合は、
EJB 2.x 仕様の第 11 章の説明に厳密に従って、すべての EJB 照会言語の照会を慎重に作成してください。
- CMP 1.1 ファインダーについて、java.util.Enumeration ではなく、java.util.Collection を返します。
- CMP 1.1 Bean について、ejbCreate() およびコード内の他の場所にある this.field = value をすべて setField(value) に変更します。
- 以下のように、非アプリケーション例外についての例外処理 (ロールバック動作) を更新します。
- 非アプリケーション例外を報告するために、
java.rmi.RemoteException ではなく、javax.ejb.EJBException をスローします。
- EJB 2.x および 1.1 では、インスタンスがスローしたすべての非アプリケーション例外によって、
インスタンスが実行されたトランザクションがロールバックされ、
インスタンスは廃棄されます。
- 以下のように、アプリケーション例外についての例外処理 (ロールバック動作) を更新します。
- EJB 2.x および 1.1 では、アプリケーション例外によって、
コンテナーがトランザクションを自動的にロールバックすることはありません。
- EJB 1.1 では、コンテナーがロールバックを実行するのは、
インスタンスが EJBContext オブジェクトで setRollbackOnly() メソッドを使用して呼び出された場合のみです。
- アプリケーション固有のデフォルト値の CMP 設定を ejbCreate 内部に置くように更新します
(EJB 1.1 コンテナーは ejbCreate を呼び出す前にすべてのフィールドを汎用デフォルト値に設定し、これにより、前のアプリケーション固有のデフォルトはすべて上書きされるため、グローバル変数は使用しないでください)。