4 GlassFish ServerでのTopLinkの使用
この章の内容は次のとおりです。
ユース・ケース
Oracle GlassFish ServerでJPAを使用するアプリケーションを実行したいとユーザーが考えています。
解決方法
Oracle GlassFishでは、EclipseLinkを完全にサポートしています。開発者がGlassFish Serverプラットフォーム用のアプリケーションを記述する場合、Java Persistence API (JPA) 2.0仕様に準拠させ、Javaとデータ・ソースを完全に統合できます。EclipseLinkでは、理想的なアプリケーション設計またはデータの整合性を損わずに、Javaアプリケーションをすべてのデータ・ソースと統合できます。
コンポーネント
-
GlassFishサーバー3.1.2。
-
TopLink 12c (12.1.2.0.0)以上。
注意:
TopLinkのコア機能は、オープン・ソースのEclipse Foundationの永続性フレームワークであるEclipseLinkによって提供されています。EclipseLinkでは、Java Persistence API (JPA)、Java Architecture for XML Binding (JAXB)、および標準に基づいたその他の永続性テクノロジと、それらの標準の拡張が実装されます。TopLinkには、EclipseLinkのすべてに加え、Oracleの追加機能が含まれています。
-
EclipseLink 2.3.0以降。
-
Oracle Database、Oracle Database Express Edition、MySQLなどのJDBC準拠のすべてのデータベース。
-
必須ではありませんが、Java EE統合開発環境(IDE)を開発に使用すると便利です。
ソリューションの概要
Oracle GlassFish Serverは、Java Platform, Enterprise Edition (Java EEプラットフォーム)仕様のリファレンス実装です。GlassFish Server Open Source Editionを使用してビルドされたGlassFish Serverは、本番にすぐ使用できる柔軟で軽量なJava EEプラットフォームを提供します。
GlassFish Serverは製品のOracle Fusion Middlewareアプリケーション・グリッド・ポートフォリオの一部であり、エンタープライズJava EEプラットフォームの最新実装を使用した軽量インフラストラクチャを必要とするアプリケーションに最適です。GlassFish Serverは、Oracle Fusion Middlewareのより広範なポートフォリオおよび大規模なエンタープライズ・アプリケーションを実行するように設計されたOracle WebLogic Serverを補完する製品です。
GlassFish ServerでTopLinkを使用する利点
TopLinkサポートを追加することにより、GlassFish Serverプラットフォームのアプリケーション開発者が、Java Persistence API (JPA) 2.0仕様に準拠してJavaとデータ・ソースを完全に統合できるようになります。TopLinkでは、理想的なアプリケーション設計またはデータの整合性を損わずに、Javaアプリケーションをすべてのデータ・ソースと統合できます。また、TopLinkを使用すれば、GlassFish Serverプラットフォームのアプリケーションで、リレーショナル・データベースまたはXMLデータ・ソースをリポジトリとして使用して、ビジネス・ドメイン・オブジェクトをストア(永続化)および取得できるようになります。
GlassFish Serverでは他の永続性プロバイダを使用でき、TopLinkは他のアプリケーション・サーバーで使用できるので、GlassFish ServerをTopLinkとともに使用すると、次のような多くの利点があります。
-
TopLinkはすべてのGlassFish Serverディストリビューションに含まれており、デフォルトのJPAプロバイダになります。
-
TopLinkでは、GlassFish Serverで動作するアプリケーションでOracle Coherenceのキャッシュを使用できます。Coherenceは、データ・キャッシング、データ・レプリケーションおよび分散コンピューティング・サービスを提供するJavaベースのインメモリー・アプリケーション・グリッド製品です。TopLinkには、デプロイされたアプリケーションでCoherenceデータ・キャッシュを使用し、オブジェクトからリレーショナルへの永続化フレームワークとしてTopLink Gridを組み込む機能が含まれています。この機能の使用方法については、このガイドでは説明しません。詳細は、『Oracle Coherenceの統合』を参照してください。
-
GlassFish ServerのTopLinkロギング統合では、包括的な統合ロギング・インフラストラクチャが実現されています。
-
EclipseLink JAXBは、GlassFishバージョン3.1.2以上にも含まれています。デフォルトのJAXBの実装ではありませんが、JAX-WSおよびJAX-RSアプリケーションで使用できます。詳細は、
http://blog.bdoughan.com/2012/02/glassfish-312-is-full-of-moxy.html
を参照してください -
EclipseLink MOXyは、GlassFishバージョン3.1.2以上にも含まれています。デフォルトのJAXBの実装ではありませんが、JAX-WSおよびJAX-RSアプリケーションで使用できます。詳細は、
http://blog.bdoughan.com/2012/02/glassfish-312-is-full-of-moxy.html
を参照してください -
GlassFish Serverでは、StrutsおよびJavaServer Faces (JSF)に基づくエンドツーエンドのJava EEフレームワークであるOracle Application Development Framework (Oracle ADF)をサポートしています。Oracle ADFでは、インフラストラクチャ・サービスおよび視覚的で宣言的な開発エクスペリエンスを実現することにより、アプリケーション開発が簡素化されています。TopLinkおよびOracle ADFをともに使用することにより、完全なJava EEアプリケーション・インフラストラクチャが実現されます。Oracle ADFについては、このマニュアルでは説明しません。『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。
Fusion Middleware製品に対するGlassFish ServerとTopLinkの関係
図4-1は、他のOracle製品に対するGlassFish ServerとTopLinkの関係および使用方法を示しています。次にGlassFish ServerおよびTopLinkをその他のOracle Middleware製品とともに使用する方法を説明します。
-
永続性プロバイダとしてEclipseLinkを使用します。
-
データのキャッシュ、データのレプリケーション、分散コンピューティング・サービスには(Oracle TopLink Gridの統合を介して)Oracle Coherenceを使用します。
-
アプリケーション・サーバーとしてGlassFishを使用します。
-
永続性データとしてOracle Databaseを使用します。
注意:
Oracle CoherenceおよびTopLink Gridについては、このガイドでは説明しません。Coherenceの詳細は、『Oracle Coherenceでのアプリケーションの開発者』およびCoherenceのその他のドキュメントへのリンクを参照してください。TopLink Gridの詳細は、「Oracle Coherenceの統合」を参照してください。
図4-1 Oracle Fusion MiddlewareスタックのGlassFish Server、TopLinkおよびその他の製品
![図4-1の説明が続きます 図4-1の説明が続きます](img/tladg_jd_001.gif)
図4-1「Oracle Fusion MiddlewareスタックのGlassFish Server、TopLinkおよびその他の製品」の説明
ソリューションの実装
EclipseLink JPAアプリケーションをGlassFish Serverで実行するには、サーバーを構成して、サーバーとアプリケーションの特定の設定を調整する必要があります。これらについては、次のタスクで説明します。
タスク1: 前提条件
このドキュメントは、次の製品およびツールに基づいていますが、原則は、サポートされているすべてのデータベースまたは開発環境に適用できます。後の項で特記されている場合以外、ソフトウェアはすでにインストールされているものと仮定しています。
-
GlassFishサーバー3.1.2。
詳細およびダウンロードは、Oracle Technology Networkの
http://www.oracle.com/technetwork/middleware/glassfish/overview/index.html
を参照してください。 -
EclipseLink 2.4.1。
詳細およびダウンロードについては、EclipseLink Webサイトの
http://www.eclipse.org/eclipselink/
を参照してください。 -
Oracle Database、Oracle Database Express Edition、MySQLなどのJDBC準拠のすべてのデータベース。
Oracle Databaseについては、
http://www.oracle.com/technetwork/database/enterprise-edition/overview/index.html
を参照してください。Oracle Database Express Editionについては、
http://www.oracle.com/technetwork/database/express-edition/overview/index.html
を参照してください。MySQLについては、
http://www.oracle.com/us/products/mysql/index.html
を参照してください。 -
必須ではありませんが、Java EE統合開発環境(IDE)を開発に使用すると便利です。たとえば、Oracle JDeveloper、Oracle Enterprise Pack for EclipseおよびNetBeansにはすべて、高度なJava EE開発ツールが用意されています。
JDeveloperについては、
http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html
を参照してください。Oracle Enterprise Pack for Eclipseについては、
http://www.oracle.com/technetwork/developer-tools/eclipse/overview/index.html
を参照してください。NetBeansの詳細は、
https://www.oracle.com/tools/technologies/netbeans-ide.html
を参照してください。
タスク2: GlassFish Serverのインストール
EclipseLinkは、GlassFish Serverの配布に含まれています。GlassFish Serverのインストールおよび構成の手順は、次のURLに説明されています。
http://docs.oracle.com/cd/E26576_01/index.htm
EclipseLinkのモジュールは、modules
ディレクトリに個別のJARファイルとして表示されます。
* \glassfish\modules . . . o org.eclipse.persistence.antlr.jar o org.eclipse.persistence.asm.jar o org.eclipse.persistence.core.jar o org.eclipse.persistence.jpa.jar o org.eclipse.persistence.jpa.modelgen.jar o org.eclipse.persistence.moxy.jar o org.eclipse.persistence.oracle.jar . . .
注意:
-
Coherenceのキャッシュをサポートする
toplink-grid.jar
ファイルを使用できるのは、Oracle Coherenceのライセンスを購入した場合のみです。toplink-grid.jar
ファイルで提供される機能の詳細は、「Oracle Coherenceの統合」を参照してください。 -
org.eclipse.persistence.oracle.jar
ファイルはGlassFishで使用可能で、EclipseLinkに対するOracle Database固有の機能を提供します。このファイルは、Oracle Databaseに対して実行されるアプリケーションのみに対して使用されます。
Object-XML (JAXBサポート)は、XMLスキーマにJavaクラスをバインドできるようにするコンポーネントです。このサポートは、org.eclipse.persistence.moxy.jar
によって提供されています。
Object-XML (JAXBサポートまたはMOXyとも呼ばれます)は、XMLスキーマにJavaクラスをバインドできるようにするコンポーネントです。このサポートは、org.eclipse.persistence.moxy.jar
によって提供されています。
タスク3: データ・ソースの設定
Java EEアプリケーションのJDBCリソースとしてOracle Databaseを構成するには、次のステップを実行します。
GlassFish ServerへのOracleデータベースのJDBCドライバの統合
JDBCドライバを統合するには、JARファイルをドメインにコピーしてから、ドメインおよびインスタンスを再起動し、ドライバを使用可能にします。
リソースに対するJDBC接続プールの作成
JDBC接続プールは、GlassFish Server管理コンソールまたはコマンドラインから作成できます。
GlassFish Server管理コンソールを使用するには:
GlassFish Server管理コンソールで、「共通タスク」ノードを展開して、「共通タスク」ページの「新規JDBC接続プールの作成」ボタンをクリックします。プールの名前、リソース・タイプ、データベース・プロバイダの名前、データ・ソースとドライバ・クラスの名前、および他の詳細を指定します。詳細は、GlassFish管理コンソール・オンライン・ヘルプのJDBC接続プールの作成に関する項を参照してください。
コマンドラインを使用するには:
JDBCリソースの作成
GlassFish Server管理コンソールを使用してJDBCリソースを作成することも、コマンドラインを使用することもできます。
GlassFish Server管理コンソールを使用するには:
GlassFish Server管理コンソールで、「リソース」ノード→「JDBC」ノード→「JDBCリソース」ノードの順に展開して、「JDBCリソース」ページをオープンします。一意のJNDIリソース名を指定して、リソースを接続プールと関連付けます。詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのJDBCリソースの作成に関する項を参照してください。
コマンドラインを使用するには:
create-jdbc-resource
サブコマンドを使用して、JDBCリソースを作成し、次のように、JNDIルックアップによってアプリケーションがJDBCリソースを見つけられるような名前を付けます。
create-jdbc-resource --connectionpoolid poolbvcallbackbmt jdbc/bvcallbackbmt
タスク4: persistence.xmlファイルの作成
例4-1に、EclipseLinkのデフォルト永続性プロバイダorg.eclipse.persistence.jpa.PersistenceProvider
を指定するpersistence.xml
のサンプル・ファイルを示します。このファイルの詳細は、『Oracle TopLinkの理解』の永続性ユニットに関する項を参照してください。
デフォルトの永続性プロバイダを使用している場合は、『Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス』のその他のデータベース・プロパティを指定できます。
ファイルに入力する値のいくつかは、次に示すとおり、クラスタ、接続および接続プールのプロパティをGlassFish Serverに定義したときに選択した値と一致する必要があります。
JDBCデータ・ソースのプロパティ:
-
名前: 通常はJNDI名と同じ、
jdbc/bvcallbackbmt
などのデータ・ソースの名前。 -
JNDI名: このデータ・ソースがバインドされる場所へのJNDIパス。これは、
persistence.xml
の<jta-data-source>
要素の値と同じにする必要があります。たとえば、jdbc/bvcallbackbmt
のように指定します。 -
データベース・タイプ:
Oracle
-
データベース・ドライバ: (デフォルト) インスタンス接続用のOracleのドライバ(Thin XA)。バージョン: 9.0.1以降
接続プロパティ:
-
データベース名: Oracle Database Express Editionのサンプルの場合は
XE
などのデータベースの名前。 -
ホスト名: データベース・サーバーのIPアドレス。たとえば、ローカルにホストされているデータベースの場合は
127.0.0.1
です。 -
ポート: Oracle Database Express Edition 11gのデフォルトである
1521
など、データベース・サーバーが接続要求をリスニングするポート番号。 -
データベース・ユーザー名: Oracle Database Express 11gのサンプルの場合は
hr
などの、データベース接続を作成するために使用するデータベース・アカウントのユーザー名。 -
パスワード: 使用するパスワード。
ターゲットの選択:
-
サーバー/クラスタ: データ・ソースをデプロイする管理サーバー、管理対象サーバーまたはクラスタを選択。1つ以上を選択できます。
例4-1のpersistence.xml
のサンプル・ファイルでは、永続性プロバイダ、JTAデータ・ソースおよびロギングの詳細を定義するプロパティを示しています。この例では、ロギング・レベルはFINE
に設定されています。このレベルでは、EclipseLinkによって生成されるSQLコードはserver.log
ファイルにロギングされます。これらのプロパティの詳細は、次を参照してください。
例4-1 persistence.xmlのサンプル・ファイル
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> <persistence-unit name="pu1" transaction-type="JTA"><provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/bvcallbackbmt</jta-data-source>
<properties><property name="eclipselink.logging.level" value="FINE"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit> </persistence>
永続性プロバイダの指定
永続性プロバイダでは、JPAの実装を定義します。これは、persistence.xml
ファイルのprovider
要素に定義されています。永続性プロバイダはベンダー固有のものです。EclipseLinkの永続性プロバイダはorg.eclipse.persistence.jpa.PersistenceProvider
です。
Oracleデータベースの指定
データベース接続の詳細はpersistence.xml
ファイルに指定します。GlassFish Serverのデフォルトでは、バンドルされている、jdbc/__default
という名前のJava DB (Derby)データベースが使用されます。Oracle Databaseなどのデフォルト以外のデータベースを使用するには、jta-data-source
要素に値を指定するか、transaction-type
要素にRESOURCE_LOCAL
を設定して、non-jta-data-source
要素に値を指定します。
デフォルトの永続性プロバイダorg.eclipse.persistence.jpa.PersistenceProvider
を使用している場合は、接続メタデータに基づいて、プロバイダがデータベース・タイプの自動検出を試みます。このデータベース・タイプを使用して、検出されたデータベース・タイプに固有のSQL文が発行されます。オプションのeclipselink.target-database
プロパティを指定すれば、データベース・タイプが正しいことを保証できます。
GlassFish Server用にpersistence.xml
ファイルでデータベース・プロパティを指定する方法の詳細は、Oracle GlassFish Serverアプリケーション開発ガイドのアプリケーション用のデータベースの指定に関する項を参照してください。
ロギングの指定
ロギングはJPA仕様の一部ではありませんが、EclipseLinkにはロギング・ユーティリティが用意されています。そのため、ログで提供される情報はEclipseLink JPA固有のものです。EclipseLinkでロギングを有効にすれば、次の情報を確認できます。
-
構成の詳細
-
デバッグを容易にするための情報
-
データベースに送信されるSQL
ロギングはpersistence.xml
ファイルに指定できます。EclipseLinkのロギング・プロパティでは、ロギングのレベル、およびログの出力をファイルまたは標準出力のどちらにするかを指定できます。ロギング・ユーティリティはjava.util.logging
に基づいているので、使用するロギング・レベルを指定できます。
ロギング・ユーティリティには、ログ出力の量および詳細度を制御するロギング・レベルが9種類用意されています。ロギング・レベルは、次のようにeclipselink.logging.level
を使用して設定します。
<property name="eclipselink.logging.level" value="FINE"/>
デフォルトでは、System.out
またはコンソールにログが出力されます。出力がファイルにロギングされるように構成するには、eclipselink.logging.file
プロパティを次のように設定します。
<property name="eclipselink.logging.file" value="output.log"/>
EclipseLinkのロギング・ユーティリティはプラガブルで、java.util.logging
などの数種類のロギング統合がサポートされています。java.util.logging
を有効にするには、eclipselink.logging.logger
プロパティを次のように設定します。
<property name="eclipselink.logging.logger" value="JavaLogger"/>
GlassFish Server内でEclipseLinkを実行している間は、デフォルトでJavaLogger
を使用するようにGlassFish Serverによって構成されます。ログは常にGlassFish Serverのserver.log
ファイルにリダイレクトされます。詳細は、『Oracle GlassFish Server管理ガイド』のログ・レベルの設定に関する項を参照してください。
EclipseLinkでのロギングおよびロギング・ユーティリティで利用可能なロギング・レベルの詳細は、『Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス』の「永続性プロパティの拡張機能リファレンス」を参照してください。
タスク5: JPA用のGlassFish Serverの設定
次の場所にあるGlassFish Serverアプリケーション開発ガイドには、JPAを利用するアプリケーションを実行するGlassFish Serverを設定する際のサーバー固有の考慮事項が説明されています。
http://docs.oracle.com/cd/E26576_01/doc.312/e24930/jpa.htm
これでは、次のトピックについて詳しく説明しています。
-
データベース接続プロパティの詳細は、アプリケーション用のデータベースの指定に関する項
-
アプリケーション用にデフォルトまたはデフォルトでない永続性プロバイダを設定する方法の詳細は、アプリケーション用の永続性プロバイダの指定に関する項
-
デフォルトの永続性プロバイダの主キーの生成のデフォルトの詳細は、主キーの生成のデフォルトに関する項
-
スキーマの自動生成を管理する注釈およびオプションの詳細は、スキーマの自動生成に関する項
-
Java Persistence APIの使用に影響する制限およびパフォーマンスの最適化の詳細は、制限および最適化に関する項
タスク6: アプリケーションの作成
EclipseLinkをJPA永続性プロバイダとして使用するアプリケーションを作成するには、Java EE IDE開発環境を開発に使用すると便利です。たとえば、JDeveloper、Oracle Enterprise Pack for EclipseおよびNetBeansにはすべて、EclipseLinkのサポートを含む高度なJava EE開発ツールが用意されています。『Oracle TopLinkの理解』の主要ツールに関する項を参照してください。
アプリケーションの記述方法の詳細は、これらのトピックについて、Oracle GlassFish Serverアプリケーション開発ガイドのJava永続性プロバイダの構成に関する章を参照してください。
タスク7: GlassFish Serverに対するアプリケーションのデプロイ
GlassFish Serverへのデプロイの詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのアプリケーションまたはモジュールのデプロイに関する項、エンタープライズ・アプリケーションのデプロイに関する項、およびWebアプリケーションのデプロイに関する項を参照してください。次の場所にあるOracle GlassFish Serverアプリケーション・デプロイメント・ガイドも参照してください。
タスク8: アプリケーションの実行
デプロイされたアプリケーションをGlassFish Server管理コンソールから起動する手順の詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのアプリケーション・クライアントの起動に関する項、およびアプリケーションの起動に関する項を参照してください。
タスク9: アプリケーションの監視
GlassFish Serverには、アプリケーションのヘルスおよびパフォーマンスを追跡するモニタリング・サービスが用意されています。コンソールからアプリケーションを監視する方法の詳細は、GlassFish Server管理コンソール・オンライン・ヘルプの監視に関する項、およびデータの監視に関する項を参照してください。コマンドラインからアプリケーションを監視する方法の詳細は、次の場所にある『Oracle GlassFish Server管理ガイド』のモニタリング・サービスの管理に関する項を参照してください。
http://docs.oracle.com/cd/E26576_01/doc.312/e24928/monitoring.htm