WebSphere Application Server, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

バージョン 1.1 からバージョン 2.1 へのエンタープライズ Bean コードのマイグレーション

Enterprise JavaBeans (EJB) バージョン 2.1 準拠の Bean は、 EJB 2.1 準拠のモジュールにのみアセンブルされます。 ただし、EJB 2.1 準拠のモジュールには、バージョン 1.x Bean とバージョン 2.1 Bean が混合して組み込まれる 場合があります。

このタスクについて

EJB バージョン 2.1 仕様では、 EJB コンテナーによる findByMethod 照会の開始前に、 現行トランザクションに含まれているすべてのエンタープライズ Bean の状態を永続ストアと同期化するように指示します。 (このアクションは、照会が現行データに対して実行されるようにするためです。) バージョン 1.1 Bean が EJB 2.1 準拠のモジュールに再アセンブルされると、 EJB コンテナーは、バージョン 1.1 Bean の状態とバージョン 2.1 Bean の状態を同期化します。 結果的に、 バージョン 1.1 Bean のアプリケーション・コードが変更されていなくても、 アプリケーションの動作に何らかの変更が生じる場合があります。

以下の情報は主に、現時点で EJB 仕様のバージョン 1.1 に準拠しているすべてのエンタープライズ Bean に適用されます。 Rational Application Developer ツールで生成された Bean 用コードのマイグレーションについて詳しくは、 当該製品の資料を参照してください。 コードの一般的なマイグレーションに関する詳細は、「学習用リソース」を参照してください。

プロシージャー

  1. コンテナー管理パーシスタンス (CMP) バージョン 1.x を持つ Bean では、 各 CMP フィールドを get および set 抽象メソッドで置き換えます。 これを行なうには、各 Bean クラスを抽象化する必要があります。
  2. CMP バージョン 1.x を持つ Bean では、 this.field = value とある箇所をすべて setField(value) に変更します。
  3. 各 CMP Bean では、1 次キー用の get および set 抽象メソッドを作成します。
  4. CMP バージョン 1.x を持つ Bean では、 ファインダー・メソッドごとに EJB 照会言語ステートメントを作成します。
    注: EJB 照会言語には、 Application Developer バージョン 5 で以下の制限があります。
    • 他の Bean との関係を作る鍵を持つ Bean に関する EJB 照会言語は、無効として表示され、デプロイメント時にエラーの原因になります。
    • IBM EJB 照会言語サポートは、さまざまな方法で EJB 2.1 仕様 (一部の制限の緩和、DB2 機能に対するサポートの追加など) を拡張します。 さまざまなベンダー・データベースまたは EJB デプロイメント・ツールを介する移植性が問題の場合は、 EJB 2.1 仕様の 11 章の説明に従って、すべての EJB 照会言語の照会を正確に書き込むように注意してください。
  5. CMP バージョン 1.x を持つ Bean のファインダー・メソッドでは、 java.util.Enumeration ではなく java.util.Collection を戻します。
  6. 非アプリケーション例外の処理を更新します。
    • 非アプリケーション例外を報告するには、java.rmi.RemoteException ではなく javax.ejb.EJBException をスローします。
    • 必要に応じてロールバック動作を変更してください。 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. ejbCreate 内になるようにアプリケーション固有のデフォルト値の CMP 設定を更新します (EJB 1.1 コンテナーが ejbCreate を呼び出す前にすべてのフィールドを汎用デフォルト値に設定し、前のアプリケーション固有のデフォルトを上書きするため、グローバル変数を使用しません)。 このアプローチは、EJB 1.0 CMP にも使用可能です。
    注: Application Developer バージョン 5 では、J2EE マイグレーション・ウィザードがあり、 EJB 2.1 プロジェクト内の EJB Bean を 1.x から 2.1 にマイグレーションします (個々に選択した Bean を単にマイグレーションすることはできません)。ウィザードは上記のマイグレーション・ステップ #1 から #2 を実行します。また、EJB 1.1 (専有) 関係を EJB 2.1 (標準) 関係にマイグレーションし、EJB 継承を維持します。



関連タスク
タスクの概説: アプリケーションでのエンタープライズ Bean の使用
関連資料
エンタープライズ Bean: 学習用リソース
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 22, 2008 12:07:38 AM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/tejb_migr20.html