ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLinkソリューション・ガイド
12c (12.1.2)
E47993-02
  目次へ移動
目次

前
 
次
 

4 GlassFish ServerでのTopLinkの使用

この章では、Oracle TopLinkをOracle GlassFish Serverにデプロイされたアプリケーションの永続性プロバイダとして使用する方法を説明します。

この章の内容は次のとおりです。

ユース・ケース

Oracle GlassFish ServerでJPAを使用するアプリケーションを実行したいとユーザーが考えています。

解決方法

Oracle GlassFishでは、EclipseLinkを完全にサポートしています。開発者がGlassFish Serverプラットフォーム用のアプリケーションを記述する場合、Java Persistence API (JPA) 2.0仕様に準拠させ、Javaとデータ・ソースを完全に統合できます。EclipseLinkでは、理想的なアプリケーション設計またはデータの整合性を損わずに、Javaアプリケーションをすべてのデータ・ソースと統合できます。

コンポーネント

4.1 ソリューションの概要

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を補完する製品です。

4.1.1 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を参照してください。

  • 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開発者ガイド』を参照してください。

4.1.2 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およびその他の製品

Fusion Middlewareスタックに対するGlassFish ServerとTopLinkの関係
図4-1「Oracle Fusion MiddlewareスタックのGlassFish Server、TopLinkおよびその他の製品」の説明

4.2 ソリューションの実装

EclipseLink JPAアプリケーションをGlassFish Serverで実行するには、サーバーを構成して、サーバーとアプリケーションの特定の設定を調整する必要があります。これらについては、次のタスクで説明します。

4.2.1 タスク1: 前提条件

このドキュメントは、次の製品およびツールに基づいていますが、原則は、サポートされているすべてのデータベースまたは開発環境に適用できます。後の項で特記されている場合以外、ソフトウェアはすでにインストールされているものと仮定しています。

4.2.2 タスク2: GlassFish Serverのインストール

EclipseLinkは、GlassFish Serverの配布に含まれています。インストールおよび構成の手順の詳細は、Oracle GlassFish Serverのドキュメント・ライブラリを参照してください。

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によって提供されています。

4.2.3 タスク3: データ・ソースの設定

Java EEアプリケーションのJDBCリソースとしてOracle Databaseを構成するには、次の手順を実行します。

  1. GlassFish ServerへのOracleデータベースのJDBCドライバの統合

  2. リソースに対するJDBC接続プールの作成

  3. JDBCリソースの作成

4.2.3.1 GlassFish ServerへのOracleデータベースのJDBCドライバの統合

JDBCドライバを統合するには、JARファイルをドメインにコピーしてから、ドメインおよびインスタンスを再起動し、ドライバを使用可能にします。

  1. JDBCドライバのJARファイルをドメインのlibサブディレクトリに、次のようにコピーします。

    cd /home/gfuser/glassfish3
    cp oracle-jdbc-drivers/ojdbc6.jar glassfish/domains/domain1/lib
    

    ドライバは動的にピックアップされるので、GlassFish Serverを再起動する必要はありません。

    EclipseLinkで提供されるOracle Database固有の拡張機能をアプリケーションが使用している場合は、ドライバをlib/extディレクトリにコピーする必要があります。詳細は、『Oracle GlassFish Serverアプリケーション開発ガイド』Oracle Databaseの拡張機能に関する項を参照してください。

  2. GlassFish Serverの管理コンソールまたはコマンドラインを使用して、ドメインのインスタンスを再起動し、インスタンスでJDBCドライバを使用できるようにします。

    GlassFish Server管理コンソールを使用するには:

    GlassFish Serverの管理コンソールで「クラスタ」ノードを展開します。クラスタのノード選択して、「一般情報」ページで、「インスタンス」タブをクリックします。再起動するインスタンスを選択します。詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのクラスタ化されたGlassFish Serverインスタンスの起動に関する項を参照してください。

    スタンドアロン・インスタンスを起動するには、「スタンドアロン・インスタンス」ノードを展開します。起動する各インスタンスを、「サーバー・インスタンス」表から選択します。「起動」をクリックします。インスタンスが起動すると、「サーバー・インスタンス」の表の各インスタンスのステータスが更新されます。詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのスタンドアロンのGlassFish Serverインスタンスの起動に関する項を参照してください。

    コマンドラインを使用するには:

    restart-instanceサブコマンドを実行して、インスタンスを再起動します。これらのコマンドでは、インスタンスの名前がpmd-i1およびpmd-i2である仮定しています。

    restart-instance pmd-i1
    restart-instance pmd-i2
    

4.2.3.2 リソースに対するJDBC接続プールの作成

JDBC接続プールは、GlassFish Server管理コンソールまたはコマンドラインから作成できます。

GlassFish Server管理コンソールを使用するには:

GlassFish Server管理コンソールで、「共通タスク」ノードを展開して、「共通タスク」ページの「新規JDBC接続プールの作成」ボタンをクリックします。プールの名前、リソース・タイプ、データベース・プロバイダの名前、データ・ソースとドライバ・クラスの名前、および他の詳細を指定します。詳細は、GlassFish管理コンソール・オンライン・ヘルプのJDBC接続プールの作成に関する項を参照してください。

コマンドラインを使用するには:

  1. create-jdbc-connection-poolサブコマンドを使用して、JDBC接続プールを作成し、データベース接続の値を指定します。このコマンドでは、URLプロパティ値の前に2つのバック・スラッシュ(\\)を使用していることに注意してください。これらのバック・スラッシュにより、コロンがプロパティと値のペアのセパレータとしてではなく、プロパティ値の一部として解釈されるようになります。次に例を示します。

    create-jdbc-connection-pool 
      --datasourceclassname oracle.jdbc.pool.OracleDataSource 
      --restype javax.sql.DataSource 
      --property User=smith\\:Password=password\\:url=jdbc\\:oracle\\:thin\\:@node_name.example.com\\:1521\\:smithdb 
        poolbvcallbackbmt 
    
  2. データベースへの接続を確認します。

    ping-connection-pool pool_name 
    

4.2.3.3 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.2.4 タスク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-1persistence.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>

4.2.4.1 永続性プロバイダの指定

永続性プロバイダでは、JPAの実装を定義します。これは、persistence.xmlファイルのprovider要素に定義されています。永続性プロバイダはベンダー固有のものです。EclipseLinkの永続性プロバイダはorg.eclipse.persistence.jpa.PersistenceProviderです。

4.2.4.2 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アプリケーション開発ガイド』アプリケーション用のデータベースの指定に関する項を参照してください。

4.2.4.3 ロギングの指定

ロギングは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)拡張機能リファレンス』の永続性プロパティの拡張のリファレンスに関する項を参照してください。

4.2.5 タスク5: JPA用のGlassFish Serverの設定

GlassFish Serverアプリケーション開発ガイドJava永続性プロバイダの構成に関する項には、JPAを利用するアプリケーションを実行するGlassFishサーバーを設定する際のサーバー固有の考慮事項が説明されています。

これでは、次のトピックについて詳しく説明しています。

  • データベース接続プロパティの詳細は、アプリケーション用のデータベースの指定に関する項

  • アプリケーション用にデフォルトまたはデフォルトでない永続性プロバイダを設定する方法の詳細は、アプリケーション用の永続性プロバイダの指定に関する項

  • デフォルトの永続性プロバイダの主キーの生成のデフォルトの詳細は、主キーの生成のデフォルトに関する項

  • スキーマの自動生成を管理する注釈およびオプションの詳細は、スキーマの自動生成に関する項

  • Java Persistence APIの使用に影響する制限およびパフォーマンスの最適化の詳細は、制限および最適化に関する項

4.2.6 タスク6: アプリケーションの作成

EclipseLinkをJPA永続性プロバイダとして使用するアプリケーションを作成するには、Java EE IDE開発環境を開発に使用すると便利です。たとえば、JDeveloper、Oracle Enterprise Pack for EclipseおよびNetBeansにはすべて、EclipseLinkのサポートを含む高度なJava EE開発ツールが用意されています。『Oracle TopLinkの理解』の主要なツールに関する項を参照してください。

アプリケーションの記述方法の詳細は、これらのトピックについて、『Oracle GlassFish Serverアプリケーション開発ガイド』Java永続性プロバイダの構成に関する章を参照してください。

4.2.7 タスク7: GlassFish Serverに対するアプリケーションのデプロイ

GlassFish Serverへのデプロイの詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのアプリケーションまたはモジュールのデプロイに関する項、エンタープライズ・アプリケーションのデプロイに関する項、およびWebアプリケーションのデプロイに関する項を参照してください。『Oracle GlassFish Serverアプリケーション開発ガイド』も参照してください。

4.2.8 タスク8: アプリケーションの実行

デプロイされたアプリケーションをGlassFish Server管理コンソールから起動する手順の詳細は、GlassFish Server管理コンソール・オンライン・ヘルプのアプリケーション・クライアントの起動に関する項、およびアプリケーションの起動に関する項を参照してください。

4.2.9 タスク9: アプリケーションの監視

GlassFish Serverには、アプリケーションのヘルスおよびパフォーマンスを追跡するモニタリング・サービスが用意されています。コンソールからアプリケーションを監視する方法の詳細は、GlassFish Server管理コンソール・オンライン・ヘルプの監視に関する項、およびデータの監視に関する項を参照してください。コマンドラインからアプリケーションを監視する方法の詳細は、『Oracle GlassFish Server管理ガイド』モニタリング・サービスの管理に関する項を参照してください。

4.3 その他の参考資料

この章のソリューションが実装されているその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。