コンテナーのインターオペラビリティーとは、WebSphere Application Server のバージョンが異なるクライアントとサーバーが、ネイ ティブの Enterprise JavaBeans (EJB) ファインダー・メソッドのサポートおよび Java 2 Platform, Enterprise Edition (J2EE) の準拠との間の相違を正常に折衝する 機能です。
エンタープライズ Bean および EJBHome のハンドルを永久に持ち続けようとするアプリケーションは、 WebSphere Application Server バージョン 5 では ObjectInputStream をサブクラス化する必要がありました。 この処置は、サブクラス ObjectInputStream がコンテキスト・クラス・ローダーを利用してエンタープライズ Bean と EJBHome スタブのクラスを解決できるようにするために必要なことでした。
また、WebSphere Application Server バージョン 5 で作成され、存続しているハンドルは、 未変更のリモート・インターフェースを持つオブジェクトでしか使用できません。 リモート・インターフェースが変更されると、 スタブがハンドル内部でシリアライズされ、リモート・インターフェースが変更 される場合はそのシリアル・バージョン UID が変わるため、ハンドルは無効になります。
このリリースでは、以前のバージョンのインプリメンテーション障害を回避する、 新しいハンドル永続メカニズムが導入されています。 ただし、この WebSphere Application Server デプロイメントでハンドルを使用する場合は、 このアップデート、今後の WebSphere Application Server 修正パッケージ、 および WebSphere Application Server バージョン 5 の EJB コンテナー累積修正を適用する際に、 以下の点を考慮してください。
WebSphere Application Server バージョン 5.0.1 システムが、 WebSphere Application Server バージョン 5 の永続化ハンドルまたはホーム・ハンドルを検出した場合、 そのハンドルは読み取られ、利用することができます。 また、再永続化する場合は、WebSphere Application Server バージョン 5.0.1 のフォーマットに変換されます。 WebSphere Application Server バージョン 5.0.1 のフォーマットは 、PQ72184 が適用されていない限り 、WebSphere Application Server バージョン 5 のシステムで読み取ることはできません。
ハンドルを永続化し、WebSphere Application Server バージョン 5.0.1 レベル以降でないシステムとの間で共用すると、問題が発生します。 ただし、バージョン 5 のシステムは、エンタープライズ Bean のハンドルまたは EJBHome の getHomeHandle を取得するための呼び出しを介して、 リモートでバージョン 5.0.1 からハンドルを受け取ることもできます。 ただし、 リモート呼び出しは成功しますが、バージョン 5 のシステムでそのハンドルを永続化しようとする場合は、 ObjectInputStream の使用と、リモート・インターフェースの変更による永続化ハンドルの無効化について、 同じ制限が適用されます。
アプリケーションにハンドルを永続的に保管し、 この永続性を複数のクライアントやアプリケーション・サーバーと共用する場合は、 クライアント・システムとサーバー・システムの両方に同時に WebSphere Application Server バージョン 5.0.1 または PQ72184 を適用します。 これを行わないと、 これらのシステムは、アップグレードしたシステムに保管されているハンドル ・データを読み取ることができません。 また、WebSphere Application Server バージョン 5 に保管されているハンドルにより、 更新されたシステムのアプリケーションが ObjectInputStream を強制的にサブクラス化してしまう可能性があります。 WebSphere Application Server Enterprise バージョン 5 のスケジューラーと Process Choreographer を使用している アプリケーションは、これらの変更の影響を受けます。 バージョン 5.0.1 または PQ72184 のいずれかを適用して、 バージョン 5 のシステムを同時に更新する必要があります。
アプリケーションが、ハンドルをセッション・コンテキスト、 つまり異なるシステム上の他のアプリケーションと共用されていない同一システム上のファイルにローカルで保管している場合は、 一度にではなく個別にシステムを更新することができます。 クライアント・コンテナーとシン・クライアント・アプリケーションが、 永続化ハンドル・データを共用していない場合も、同様に必要に応じて更新することができます。 しかし、ホーム・インターフェースまたはリモート・インターフェースのいずれかが変更された場合 、WebSphere Application Server バージョン 5、バージョン 4.0.3 以降 (プロパティー・フラグを設定)、 またはバージョン 3.5.7 以降 (プロパティー・フラグを設定) で作成して永続化されたハンドルは使用できません。
WebSphere Application Server バージョン 3.5.7 またはバージョン 4.0.3 以上で、 システム・プロパティー com.ibm.websphere.container.portable を true に設定できる場合は、 そのサーバー上のオブジェクトのどのハンドルにも同じインターオペラビリティー制限があります。 さらに、WebSphere Application Server バージョン 3.5.7 以上またはバージョン 4.0.3 アプリケーションが、 WebSphere Application Server バージョン 5 またはバージョン 5.0.1 から取得したハンドルを保管する場合も、 ObjectInputStream のサブクラス化の必要性と、 リモート・インターフェースの変更後のハンドルの使用可能度について、同じ制限があります。
Http セッションおよびハンドルの複製
この注釈は、ホームまたは Enterprise JavaBeans へのハンドルを置くか 、あるいは アプリケーションの Http セッションに EJB または EJBHome 参 照を置いて、Http セッション複製を使用する場合に適用されます。バージョン 5.0.0 マシンと バージョン 5.0.1 または 5.0.2 マシンの混合環境の複製を考えている場合は、 まず始めに、最新バージョン 5.0.0 コンテナーの累積緊急修正プログラムを バージョン 5.0.0 マシンに適用してから、バージョン 5.0.1 または 5.0.2 サーバーを類型に 適用するようにします。 バージョン 5.0.0 サーバーは、バージョン 5.0.1 および 5.0.2 サーバーで 使用されている永続的なハンドルのフォーマットを認識できないため、この手順を踏む必要があります。 これは、バージョン 5.0.0 およびバージョン 5.0.1 または 5.0.2 システムで、 前述の共用データベースの使用を試みた場合とよく似ています。 しかし、このケースの場合は、パーシスタンス (永続性) を提供するデータベースではなく、 HTTP セッション・オブジェクトです。
トップダウン・デプロイメント・マッピング
ハンドル・オブジェクトのサイズは、行われた修正が原因で増加しており、ObjectInputStream などのサブクラス化の前の要件なしで、シリアライゼーションおよびデシリアライゼーションを可能にします。 EJB および EJBHome リファレンスを含むオブジェクトのトップダウン・デプロイメントは、ハンドルを含む BITDATA が 1000 バイトの VARCHAR フィールドを持つ、データベース表 ddl を作成します。 オブジェクトのハンドルが 1000 バイトのデフォルト・フィールドに適合せず、 より高い値に調整しなければならない場合もあります。 例えば、1250、1500 などのように、250 バイトずつ増やすことができます。