この章では、Oracle GlassFish ServerにデプロイされたTopLink Java Persistence API (JPA) 2.0のアプリケーションに対してTopLinkを永続性プロバイダとして使用する方法を説明します。
この章には次の項が含まれます:
Oracle GlassFish Serverは、Java Platform, Enterprise Edition (Java EE)仕様のリファレンス実装です。GlassFish Server Open Source Editionを使用してビルドされたOracle GlassFish Serverは、本番にすぐ使用できる柔軟で軽量なJava EEプラットフォームを提供します。
GlassFish ServerはOracle Fusion Middlewareアプリケーション・グリッド・ポートフォリオの一部であり、エンタープライズJavaの最新実装を使用した軽量インフラストラクチャを必要とするアプリケーションに最適です。GlassFish Serverは、Oracle Fusion Middlewareのより広範なポートフォリオおよび大規模なエンタープライズ・アプリケーションを実行するように設計されたOracle WebLogic Serverを補完する製品です。
TopLinkサポートを追加することにより、GlassFishプラットフォームのアプリケーション開発者が、Java Persistence API (JPA) 2.0仕様に準拠してJavaとデータ・ソースを完全に統合できるようになります。TopLinkでは、理想的なアプリケーション設計またはデータの整合性を損わずに、Javaアプリケーションをすべてのデータ・ソースと統合できます。また、TopLinkを使用すれば、GlassFishプラットフォームのアプリケーションで、リレーショナル・データベースまたはXMLデータ・ソースをリポジトリとして使用して、ビジネス・ドメイン・オブジェクトを格納(永続化)および取得できるようになります。
GlassFish Serverでは他の永続性プロバイダを使用でき、TopLinkは他のアプリケーション・サーバーで使用できるので、GlassFish ServerをTopLinkとともに使用すると、次のような多くの利点があります。
TopLinkはすべてのGlassFish Serverディストリビューションに含まれており、デフォルトのJPAプロバイダになります。
TopLinkでは、GlassFish Serverで動作するアプリケーションでOracle Coherenceのキャッシュを使用できます。Coherenceは、データ・キャッシング、データ・レプリケーションおよび分散コンピューティング・サービスを提供するJavaベースのインメモリー・データグリッド製品です。TopLinkには、デプロイされたアプリケーションでCoherenceデータ・キャッシュを使用し、オブジェクトからリレーショナルへの永続化フレームワークとしてTopLink Gridを組み込む機能が含まれています。この製品の使用方法は、このドキュメントでは説明しません。詳細は、『Oracle Fusion Middleware Oracle TopLinkのためのCoherence Grid統合ガイド』を参照してください。
GlassFish ServerのTopLinkロギング統合では、包括的な統合ロギング・インフラストラクチャが実現されています。
GlassFish Serverは、StrutsとJavaServer Faces (JSF)に基づいたエンド・ツー・エンドのJava EEフレームワークであるOracle Application Framework (ADF)をサポートしています。ADFでは、インフラストラクチャ・サービスおよび視覚的で宣言的な開発エクスペリエンスを実現することにより、アプリケーション開発が簡素化されています。TopLinkおよびADFをともに使用することにより、完全なJava EEアプリケーション・インフラストラクチャが実現されます。ADFの使用方法は、このドキュメントでは説明しません。『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。
図3-1は、他のOracle製品に対するGlassFish ServerとTopLinkの関係および使用方法を示しています。TopLinkは永続性プロバイダとして使用できます。データ・キャッシング、データ・レプリケーションおよび分散コンピューティング・サービスには、Oracle Coherenceを(TopLink Gridの統合を介して)使用します。GlassFishはアプリケーション・サーバーとして使用し、データの永続化にはOracleデータベースを使用します。
注意: Oracle CoherenceおよびTopLink Gridについては、このドキュメントでは説明しません。Coherenceの詳細は、Oracle Coherence開発者ガイドを参照し、Coherenceの他のドキュメントについては、リンクを参照してください。TopLink Gridの詳細は、『Oracle Fusion Middleware Oracle TopLinkのためのCoherence Grid統合ガイド』を参照してください。 |
図3-1 Fusion Middlewareスタックの他の製品に対するGlassFish ServerとTopLinkの関係
このドキュメントは、次の製品およびツールに基づいていますが、原則は、サポートされているすべてのデータベースまたは開発環境に適用できます。後の項で特記されている場合以外、ソフトウェアはすでにインストールされているものと仮定しています。
GlassFish Serverに対して、TopLink アプリケーションを開発およびデプロイするには、次のものが必要です。
GlassFish Serverバージョン3.1.1。
詳細およびダウンロードは、Oracle Technology Networkのhttp://www.oracle.com/technetwork/middleware/glassfish/overview/index.html
を参照してください。
EclipseLinkソフトウェア・ディストリビューション2.3.0。
詳細およびダウンロードは、EclipseLink Webサイトのhttp://www.eclipse.org/eclipselink/
を参照してください。
Oracle、Oracle Express、MySQLなどのJDBC準拠データベース。
Oracleデータベースについては、http://www.oracle.com/technetwork/database/enterprise-edition/overview/index.html
を参照してください。
Oracle 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)を開発に使用すると便利です。たとえば、JDeveloper、Oracle Enterprise Pack for Eclipse (OEPE)およびOracle NetBeansにはすべて、高度なJava EE開発ツールが用意されています。
JDeveloperについては、http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html
を参照してください。
OEPEについては、http://www.oracle.com/technetwork/developer-tools/eclipse/overview/index.html
を参照してください。
NetBeansについては、http://www.oracle.com/us/products/tools/050845.html
を参照してください。
TopLink JPAアプリケーションをGlassFish Serverで実行するには、サーバーを構成して、サーバーとアプリケーションの特定の設定を調整する必要があります。これらについては、次のタスクで説明します。
Oracle TopLinkはGlassFishのディストリビューションに含まれています。GlassFishサーバーのインストールおよび構成の手順は、次のURLに説明されています。
http://glassfish.java.net/docs/3.1.1/installation-guide.pdf
TopLinkのモジュールは、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.oracle.jar ...
注意:
|
Object-XML (JAXBサポートまたはMOXyとも呼ばれます)は、XMLスキーマにJavaクラスをバインドできるようにするTopLinkコンポーネントです。GlassFish Serverに対するObject-XMLサポートの追加はオプションです。多くのアプリケーションは、Object-XMLサポートを追加しなくてもGlassfish Serverで実行できます。
Object-XMLはGlassFish 3.1.1とともには配布されません。Object-XMLバンドルを入手するには、EclipseLinkリリース2.3.0ソフトウェア・ディストリビューションから入手する必要があります。
EclipseLinkリリース2.3.0ソフトウェア・ディストリビューションをダウンロードしてオープンします。
Object-XMLバンドルorg.eclipse.persistence.moxy_2.3.0.v20110604-r9504.jar
をディストリビューションから.../glassfish/modules
フォルダにコピーします。
.../glassfish/domains
フォルダの各ドメインで、osgi-cache
サブフォルダの内容を削除します。
GlassFish Serverがすでに実行中の場合は再起動します。
注意: リリース3.1.2以降、Object-XML (MOXy)はGlassFish Serverとともに提供されるようになりました。 |
Java EEアプリケーションのJDBCリソースとしてOracleデータベースを構成するには、次のタスクを実行します。
JDBCドライバを統合するには、JARファイルをドメインにコピーしてから、ドメインおよびインスタンスを再起動し、ドライバを使用可能にします。
JDBCドライバのJARファイルをドメインのlib
サブディレクトリに、次のようにコピーします。
cd /home/gfuser/glassfish3 cp oracle-jdbc-drivers/ojdbc6.jar glassfish/domains/domain1/lib
GlassFish Serverを再起動する必要はありません。ドライバは動的にピックアップされます。
TopLinkで提供されるOracleデータベース固有の拡張機能をアプリケーションが使用している場合は、ドライバをlib/ext
ディレクトリにコピーする必要があります。詳細は、Oracle GlassFish Server 3.1アプリケーション開発ガイドのOracleデータベースの拡張機能に関する項を参照してください。
http://download.oracle.com/docs/cd/E18930_01/html/821-2418/gbxjh.html#giqbi
GlassFishの管理コンソールまたはコマンド・ラインを使用して、ドメインのインスタンスを再起動し、インスタンスがJDBCドライバを使用できるようにします。
GlassFish Server管理コンソールを使用するには:
GlassFish Server管理コンソールで、「クラスタ」ノードをオープンします。クラスタのノード選択して、「一般情報」ページで、「インスタンス」タブをクリックします。再起動するインスタンスを選択します。詳細は、GlassFish管理コンソール・オンライン・ヘルプのクラスタ化されたGlassFish Serverインスタンスの起動に関する項を参照してください。
コマンド・ラインを使用するには:
restart-instance
サブコマンドを実行して、インスタンスを再起動します。これらのコマンドでは、インスタンスの名前がpmd-i1
およびpmd-i2
である仮定しています。
restart-instance pmd-i1 restart-instance pmd-i2
JDBC接続プールは、GlassFish Server管理コンソールまたはコマンド・ラインから作成できます。
GlassFish Server管理コンソールを使用するには:
GlassFish Server管理コンソールで、「共通タスク」ノードを選択して、「共通タスク」ページの「新規JDBC接続プールの作成」ボタンをクリックします。プールの名前、リソース・タイプ、データベース・プロバイダの名前、データ・ソースとドライバ・クラスの名前、および他の詳細を指定します。詳細は、GlassFish管理コンソール・オンライン・ヘルプのJDBC接続プールの作成に関する項を参照してください。
コマンド・ラインを使用するには:
create-jdbc-connection-pool
サブコマンドを使用して、JDBC接続プールを作成し、データベース接続の値を指定します。このコマンドでは、URLプロパティ値の前に2つのバック・スラッシュ(\\
)を使用していることに注意してください。これらのバック・スラッシュにより、コロンがプロパティと値のペアのセパレータとしてではなく、プロパティ値の一部として解釈されるようになります。次に例を示します。
create-jdbc-connection-pool --datasourceclassname oracle.jdbc.pool.OracleDataSource --restype javax.sql.DataSource --property User=coreora10g\\:Password=coreora10g\\:url=jdbc\\:oracle\\:thin\\:@asqe-db1.us.oracle.com\\:1521\\:asqedb poolbvcallbackbmt
データベースへの接続を確認します。
ping-connection-pool pool_name
GlassFish Server管理コンソールを使用してJDBCリソースを作成することも、コマンド・ラインを使用することもできます。
GlassFish Server管理コンソールを使用するには:
GlassFish Server管理コンソールで、「リソース」ノード、「JDBC」ノード、「JDBCリソース」ノードを選択して、「JDBCリソース」ページをオープンします。一意のJNDIリソース名を指定して、リソースを接続プールと関連付けます。詳細は、GlassFish管理コンソール・オンライン・ヘルプのJDBCリソースの作成に関する項を参照してください。
コマンド・ラインを使用するには:
create-jdbc-resource
サブコマンドを使用して、JDBCリソースを作成し、JNDIルックアップによってアプリケーションがJDBCリソースを見つけられるような名前を付けます。次に例を示します。
create-jdbc-resource --connectionpoolid poolbvcallbackbmt jdbc/bvcallbackbmt
例3-1に、TopLinkのデフォルト永続性プロバイダorg.eclipse.persistence.jpa.PersistenceProvider
を指定するpersistence.xml
のサンプル・ファイルを示します。このファイルの詳細は、EclipseLinkドキュメントの『Configuring Persistence Units Using persistence.xml』を参照してください。
デフォルトの永続性プロバイダを使用している場合は、EclipseLinkドキュメントの『How to Use EclipseLink JPA Extensions for JDBC Connection Communication』にリストされている追加のデータベース・プロパティを指定できます。
ファイルに入力する値のいくつかは、次に示すように、クラスタ、接続および接続プールのプロパティを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のサンプルの場合はXE
です。
ホスト名: データベース・サーバーのIPアドレス。たとえば、ローカルにホストされているデータベースの場合は127.0.0.1
です。
ポート: データベース・サーバーが接続リクエストをリスニングするポート番号。たとえば、Oracle Database Express 11gのデフォルトは1521
です。
データベース・ユーザー名: データベース接続を作成するために使用するデータベース・アカウントのユーザー名。たとえば、Oracle Database Express 11gのサンプルの場合はhr
です。
パスワード: 使用するパスワード。
ターゲットの選択:
サーバー/クラスタ: データ・ソースをデプロイする管理サーバー、管理対象サーバーまたはクラスタを選択します。1つ以上を選択できます。
例3-1のpersistence.xml
のサンプル・ファイルでは、永続性プロバイダ、JTAデータ・ソースおよびロギングの詳細を定義するプロパティを強調表示しています。この例では、ロギング・レベルはFINE
に設定されています。このレベルでは、EclipseLinkによって生成されるSQLコードはserver.log
にロギングされます。これらのプロパティの詳細は、次の項を参照してください。
例3-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
要素に定義されています。永続性プロバイダはベンダー固有のものです。Oracle TopLinkの永続性プロバイダはorg.eclipse.persistence.jpa.PersistenceProvider
です。
データベース接続の詳細はpersistence.xml
ファイルに指定します。GlassFish Serverのデフォルトでは、バンドルされている、jdbc/__default
という名前のJava DB (Derby)データベースが使用されます。Oracleデータベースなどのデフォルト以外のデータベースを使用するには、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 3.1アプリケーション開発ガイドのデータベースの指定に関する項を参照してください。
http://download.oracle.com/docs/cd/E18930_01/html/821-2418/gbwmj.html
このトピックでは、(Java SEモードで)EJBコンテナ外部のJava Persistence APIを使用する方法についても説明します。eclipselink.jdbc.*
プロパティは、GlassFish ServerをJava SEモードで使用する場合のみに指定します。次に例を示します。
... <property name="eclipselink.jdbc.url" value="jdbc:oracle:thin://localhost:1521:xe;retrieveMessagesFromServerOnGetMessage=true;create=true;"/> <property name="eclipselink.jdbc.user" value="APP"/> <property name="eclipselink.jdbc.password" value="APP"/> ...
Oracleデータベースの一般的な接続の詳細を次に示します。
ドライバ: oracle.jdbc:OracleDriver
SID (データベース名): xe
ホスト: localhost
ポート番号: 1521
ユーザー名: データベース・ユーザーの名前
パスワード: データベース・パスワード
接続URL: jdbc:oracle:thin:@localhost:1521:xe
JDBCデータソース接続のこれらのプロパティおよび他の拡張機能の詳細は、EclipseLinkドキュメントの『Using EclipseLink JPA Extensions for JDBC』およびPersistenceUnitProperties
APIを参照してください。
『Oracle Fusion Middleware Java API Reference for EclipseLink』のPersistenceUnitProperties
に関する項も参照してください。
ロギングはJPA仕様の一部ではありませんが、TopLinkにはロギング・ユーティリティが用意されています。そのため、ログで提供される情報はTopLink JPA固有のものです。TopLinkでロギングを有効にすれば、次の情報を表示できます。
構成の詳細
デバッグを容易にするための情報
データベースに送信されるSQL
ロギングはpersistence.xml
ファイルに指定できます。TopLinkのロギング・プロパティでは、ロギングのレベル、およびログの出力をファイルまたは標準出力のどちらにするかを指定できます。ロギング・ユーティリティは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"/>
TopLinkのロギング・ユーティリティはプラガブルで、java.util.logging
などの数種類のロギング統合がサポートされています。java.util.logging
を有効にするには、eclipselink.logging.logger
プロパティを次のように設定します。
<property name="eclipselink.logging.logger" value="JavaLogger"/>
GlassFish Server内でTopLinkを実行している間は、デフォルトでJavaLogger
を使用するようにGlassFishによって構成されます。ログは常にGlassFishのserver.log
ファイルにリダイレクトされます。詳細は、Oracle GlassFish Server 3.1アプリケーション開発者ガイドのログ・レベルの設定に関する項を参照してください。
http://download.oracle.com/docs/cd/E18930_01/html/821-2418/gdpwu.html
TopLinkのロギングおよびロギング・ユーティリティで使用可能なロギング・レベルの詳細は、EclipseLinkドキュメントの『EclipseLink/Examples/JPA/Logging』を参照してください。
GlassFish Serverアプリケーション開発ガイドには、JPAを利用するアプリケーションを実行するGlassFishサーバーを設定する際のサーバー固有の考慮事項が説明されています。
http://download.oracle.com/docs/cd/E18930_01/html/821-2418/gbxjk.html
アプリケーション開発ガイドには、次のトピックの詳細が説明されています。
データベースの指定に関する項には、データベース接続プロパティの詳細が説明されています。
追加のデータベース・プロパティに関する項には、デフォルトの永続性プロバイダを使用している場合のデータベース・プロパティの詳細が説明されています。
キャッシュの構成に関する項には、デフォルトの永続性プロバイダのキャッシング・プロパティの詳細が説明されています。
ロギング・レベルの設定に関する項には、デフォルトの永続性プロバイダのロギング・プロパティの設定の詳細が説明されています。
TopLinkをJPAプロバイダとして使用するアプリケーションを作成するには、Java EE開発環境を開発に使用すると便利です。たとえば、Oracle JDeveloper、Oracle Enterprise Pack for Eclipse (OEPE)およびOracle NetBeansにはすべて、TopLinkのサポートを含む高度なJava EE開発ツールが用意されています。Oracle TopLinkコンセプトのTopLinkの開発ツールに関する項を参照してください。
アプリケーション開発のガイドラインについては、Oracle GlassFish Server 3.1アプリケーション開発ガイドのJava永続性APIの使用の章の次のトピックを参照してください。
http://download.oracle.com/docs/cd/E18930_01/html/821-2418/gbxjk.html
GlassFish Serverへのデプロイの詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのアプリケーションまたはモジュールのデプロイに関する項、エンタープライズ・アプリケーションのデプロイに関する項、およびWebアプリケーションのデプロイに関する項を参照してください。Oracle GlassFish Server 3.1アプリケーション・デプロイメント・ガイドも参照してください。
http://download.oracle.com/docs/cd/E18930_01/html/821-2417/index.html
デプロイされたアプリケーションをGlassFish管理コンソールから起動する手順の詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのアプリケーション・クライアントの起動に関する項、およびアプリケーションの起動に関する項を参照してください。
GlassFish Serverには、アプリケーションのヘルスおよびパフォーマンスを追跡するモニタリング・サービスが用意されています。コンソールからアプリケーションをモニタリングする方法の詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのモニタリングに関する項、およびデータのモニタリングに関する項を参照してください。コマンド・ラインからアプリケーションをモニタリングする方法の詳細は、Oracle GlassFish Server 3.1アプリケーション・デプロイメント・ガイドのモニタリング・サービスの管理に関する項を参照してください。
http://download.oracle.com/docs/cd/E18930_01/html/821-2416/ablur.html
Oracle TopLinkおよびOracle GlassFish Serverの詳細は、次のリンクを参照してください。
EclipseLinkドキュメント
Oracle GlassFish Server 3.1アプリケーション・デプロイメント・ガイド
http://download.oracle.com/docs/cd/E18930_01/html/821-2417/index.html
Oracle GlassFish Serverアプリケーション開発ガイド
http://download.oracle.com/docs/cd/E18930_01/html/821-2418/gbxjk.html
Oracle GlassFish Server 3.1 - 3.1.1ドキュメント・ライブラリ