ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLinkソリューション・ガイド
11g リリース1 (11.1.1)
B66616-01
  目次へ移動
目次

前
 
次
 

3 GlassFish ServerでのTopLinkの使用

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

この章には次の項が含まれます:

3.1 TopLinkおよびGlassFish Serverの理解

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

3.1.1 GlassFish ServerでTopLinkを使用する利点

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.2 Fusion Middleware製品に対するGlassFish ServerとTopLinkの関係

図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の関係

Fusion Middlewareスタックに対するGlassFish ServerとTopLinkの関係
図3-1「Fusion Middlewareスタックの他の製品に対するGlassFish ServerとTopLinkの関係」の説明

3.2 開始時の必要事項

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

GlassFish Serverに対して、TopLink アプリケーションを開発およびデプロイするには、次のものが必要です。

3.3 主なタスク

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

3.3.1 タスク1: GlassFish Serverに対するObject-XML (JAXB)サポートの追加(オプション)

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
      ...

注意:

  • Coherenceのキャッシュをサポートするtoplink-grid.jarファイルを使用できるのは、Oracle Coherenceのライセンスを購入した場合のみです。toplink-grid.jarファイルで提供される機能の詳細は、Oracle Coherence Oracle TopLinkのためのCoherence Grid統合ガイドを参照してください。

  • org.eclipse.persistence.oracle.jarファイルはGlassFishで使用可能で、TopLinkに対するOracleデータベース固有の機能を提供します。このファイルは、Oracleデータベースに対して実行されるアプリケーションのみに対して使用されます。


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ソフトウェア・ディストリビューションから入手する必要があります。

  1. EclipseLinkリリース2.3.0ソフトウェア・ディストリビューションをダウンロードしてオープンします。

  2. Object-XMLバンドルorg.eclipse.persistence.moxy_2.3.0.v20110604-r9504.jarをディストリビューションから.../glassfish/modulesフォルダにコピーします。

  3. .../glassfish/domainsフォルダの各ドメインで、osgi-cacheサブフォルダの内容を削除します。

  4. GlassFish Serverがすでに実行中の場合は再起動します。


注意:

リリース3.1.2以降、Object-XML (MOXy)はGlassFish Serverとともに提供されるようになりました。


3.3.2 タスク2: データソースの設定

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

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

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

  3. JDBCリソースの作成

3.3.2.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を再起動する必要はありません。ドライバは動的にピックアップされます。

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

    http://download.oracle.com/docs/cd/E18930_01/html/821-2418/gbxjh.html#giqbi

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

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

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

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

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

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

3.3.2.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=coreora10g\\:Password=coreora10g\\:url=jdbc\\:oracle\\:thin\\:@asqe-db1.us.oracle.com\\:1521\\:asqedb 
        poolbvcallbackbmt 
    
  2. データベースへの接続を確認します。

    ping-connection-pool pool_name 
    

3.3.2.3 JDBCリソースの作成

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.3.3 タスク3: persistence.xmlファイルの作成

例3-1に、TopLinkのデフォルト永続性プロバイダorg.eclipse.persistence.jpa.PersistenceProviderを指定するpersistence.xmlのサンプル・ファイルを示します。このファイルの詳細は、EclipseLinkドキュメントの『Configuring Persistence Units Using persistence.xml』を参照してください。

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Configuration/JPA/persistence.xml

デフォルトの永続性プロバイダを使用している場合は、EclipseLinkドキュメントの『How to Use EclipseLink JPA Extensions for JDBC Connection Communication』にリストされている追加のデータベース・プロパティを指定できます。

http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#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-1persistence.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>

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

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

3.3.3.2 Oracleデータベースの指定

データベース接続の詳細は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を参照してください。

http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#Using_EclipseLink_JPA_Extensions_for_JDBC

『Oracle Fusion Middleware Java API Reference for EclipseLink』のPersistenceUnitPropertiesに関する項も参照してください。

3.3.3.3 ロギングの指定

ロギングは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』を参照してください。

http://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging

3.3.4 タスク4: JPA用のGlassFish Serverの設定

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

http://download.oracle.com/docs/cd/E18930_01/html/821-2418/gbxjk.html

アプリケーション開発ガイドには、次のトピックの詳細が説明されています。

  • データベースの指定に関する項には、データベース接続プロパティの詳細が説明されています。

  • 追加のデータベース・プロパティに関する項には、デフォルトの永続性プロバイダを使用している場合のデータベース・プロパティの詳細が説明されています。

  • キャッシュの構成に関する項には、デフォルトの永続性プロバイダのキャッシング・プロパティの詳細が説明されています。

  • ロギング・レベルの設定に関する項には、デフォルトの永続性プロバイダのロギング・プロパティの設定の詳細が説明されています。

3.3.5 タスク5: アプリケーションの作成

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

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

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

http://download.oracle.com/docs/cd/E18930_01/html/821-2417/index.html

3.3.7 タスク7: アプリケーションの実行

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

3.3.8 タスク8: アプリケーションの監視

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

http://download.oracle.com/docs/cd/E18930_01/html/821-2416/ablur.html

3.4 その他の参照資料

Oracle TopLinkおよびOracle GlassFish Serverの詳細は、次のリンクを参照してください。