Java EE 環境での JPA アプリケーションのアセンブル
Java™ Persistence API (JPA) を使用するアプリケーションの開発と構成は完了しました。 次に、環境に合わせて JPA アプリケーションをパッケージ化する必要があります。
このタスクについて
手順
アプリケーションをパッケージ化します。 Java EE 環境で JPA を使用するアプリケーションには、複数のパッケージ化のオプションがあります。
ご使用のアプリケーションの各モジュールでの JPA の使用法および構成に最適なパッケージ化のオプションを選択してください。
以下に一般的なパッケージ化のオプションの一部を示します。
パッケージ化オプションの完全なリストについては、Java Persistence API の仕様書を参照してください。
注: IBM® Optim™ PureQuery Runtime を使用している場合は、persistence_unit_name.pdqxml ファイルを JPA アプリケーション JAR ファイルに追加します。
このファイルは、persistence.xml ファイルのある META-INF ディレクトリーと同じディレクトリーにあります。
これらのパーシスタンス・ファイルは、開発タスクで作成されたものです。詳しくは、トピック『Java EE 環境用の JPA アプリケーションの開発』を参照してください。
- スタンドアロン Enterprise JavaBeans (EJB) モジュールまたはスタンドアロン・アプリケーション・クライアント・モジュールの場合は、EJB モジュールおよびアプリケーション・クライアント・モジュールを標準 Java アーカイブ (JAR) ファイルにパッケージ化します。以下の条件でアプリケーションをパッケージ化する必要があります。
- JAR ファイルには、アプリケーション・クライアントの EJB クラス・ファイル、または Java クラス・ファイルが格納されている必要があります。
- アーカイブの META-INF ディレクトリーには、persistence.xml ファイルが含まれている必要があります。
- アプリケーションで orm.xml マッピング・ファイルまたはカスタム・マッピング・ファイルを使用している場合は、JAR ファイルにもそのファイルが格納されている必要があります。orm.xml ファイルの場所がパーシスタンス・ユニットに指定されていない場合のデフォルトの場所は、JAR ファイルの META-INF ディレクトリーです。
- アプリケーションの開発時にアノテーション・プロセッサーによって生成される Criteria Metamodel クラス・ファイルを、エンティティー・クラス・ファイルと同じロケーションにある JAR ファイルに組み込む必要があります。
- スタンドアロンの Web モジュールの場合は、スタンドアロンの Web アプリケーション・アーカイブ (WAR) ファイルにアプリケーションをパッケージ化します。以下の条件でアプリケーションをパッケージ化する必要があります。
- アプリケーションの開発時にアノテーション・プロセッサーによって生成される Criteria Metamodel クラス・ファイルを、エンティティー・クラス・ファイルと同じロケーションにある WAR ファイルに組み込む必要があります。
- WAR ファイルには、Web アプリケーション・クラス・ファイルが格納されている必要があります。 Web アプリケーション・クラス・ファイルは、WEB-INF/classes ディレクトリーに含まれているか、または WAR ファイルの WEB-INF/lib ディレクトリーにある JAR ファイルに含まれている必要があります。
- persistence.xml ファイルの含まれる場所は、WEB-INF/classes/META-INF ディレクトリーか、または WAR ファイルの WEB-INF/lib ディレクトリーにある JAR ファイルの META-INF ディレクトリーである必要があります。
- アプリケーションで orm.xml マッピング・ファイルまたはカスタム・マッピング・ファイルを使用している場合は、WAR ファイルにもそのファイルが格納されている必要があります。マッピング・ファイルは、WEB-INF/classes ディレクトリーに配置するか、または WAR ファイルの WEB-INF/lib ディレクトリーに格納されている JAR ファイルに配置できます。
マッピング・ファイルの場所を指定するには、persistence.xml ファイルの <mapping-file> エレメントを使用します。
以下に例を示します。
<mapping-file>META-INF/JPAorm.xml</mapping-file>
- 1 つ以上のモジュールが含まれるエンタープライズ・アプリケーションの場合は、標準のエンタープライズ・アプリケーション・アーカイブ (EAR) ファイルにアプリケーションをパッケージ化します。エンタープライズ・アプリケーションには、1 つ以上の EJB モジュール、Web モジュール、またはアプリケーション・クライアント・モジュールを含めることができます。
以下の条件でアプリケーションをパッケージ化する必要があります。
- 複数のモジュールで同一のパーシスタンス・ユニットを使用する場合は、パーシスタンス・アーカイブを作成し、そのパーシスタンス・アーカイブを EAR ファイルにパッケージできます。
- パーシスタンス・アーカイブ・ファイルには、エンティティー・クラス、関連する Criteria Metamodel クラス、必要なサポート用クラス、persistence.xml ファイル、および追加のマッピング・ファイルを格納します。 persistence.xml ファイルおよびマッピング・ファイルの場所については、EJB モジュールおよびアプリケーション・クライアント・モジュールのパッケージ化ルールに従ってください。
- パーシスタンス・アーカイブを使用する各モジュールには、その META-INF/MANIFEST.MF ファイルにクラスパス・エントリーが必要です。
マニフェスト・ファイルの例を以下に示します。
Manifest-Version: 1.0 Class-Path: MyJPAEntities.jar
- 各モジュールで個別のパーシスタンス・ユニットを使用し、エンティティー・クラスを共有する場合は、 パーシスタンス・アーカイブにそのエンティティー・クラスをパッケージ化し、 各モジュールごとに別々の persistence.xml ファイルおよびマッピング・ファイルを指定できます。 各モジュールでエンティティー・クラスまたはパーシスタンス構成を共有しない場合は、スタンドアロンの EJB モジュール、スタンドアロンのアプリケーション・クライアント・モジュール、またはスタンドアロンの Web アプリケーション・アーカイブとして各モジュールをパッケージ化し、それを EAR ファイルにパッケージ化します。