各 Java 2 platform, Enterprise Edition (J2EE) アプリケーション (EAR ファイル内にある) には、
複数のエンタープライズ Bean コンテナー管理パーシスタンス (CMP) モジュールを内包できます。
各 EJB CMP モジュール (JAR ファイルとして) には、複数の CMP Bean を含めることができます。
各 Bean を構成して、各データ・ソースの異なる Java Naming and Directory Interface (JNDI) 名を使用することにより、
その独自のデータ・ソースに接続できます。
ただし、以下のようにいくつかの制約があります。
- デプロイメント・ツールは、EJB CMP Beans を EJB JAR レベルで異なるデータベースにマップできるようにするだけです。
さまざまなデータベース・スキーマ・マッピング用に、さまざまなバックエンド ID があります。
製品は、属性 backendId を使用して、データベース特定コーディングを区別します。
例えば、Oracle データベースにアクセスするコードは、
DB2 データベースにアクセスするコードとは異なります。
ベンダーが同じであっても、
その製品のバージョンが異なれば、生成されるコードも異なります。
- 実行時に、WebSphere Application Server は CurrentBackendId 属性を使用して、
正しいバックエンド関連のコードにアクセスします。
EJB JAR レベルで構成できるのは、CurrentBackendId だけです。
これは、特定の EJB JAR ファイル (すべての CMR Beans を含む) 内のすべての EJB CMP Beans が、
同じタイプのデータ・ソース (つまり、同じベンダー、同じバージョン) に接続する必要があることを意味します。
- EJB CMP Beans を同じタイプの別のデータベースに接続できた場合であっても、
接続の結果、異なるデータベースからの表の間で表の結合 が起こると、プロセスは失敗します。
さまざまなアクション (EJB 照会、継承サポート、readAhead.. など) の結果、
表の結合が起こる可能性があります。
- データ・ソースは、
トランザクション内の複数のデータベース接続をサポートする XA データ・ソースでなければなりません。