6 IBM WebSphere Application ServerでTopLinkを使用する方法

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

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

ユース・ケース

TopLinkは、WebSphere Application Serverを含む多くの一般的なJava EEアプリケーション・サーバーで使用できます。

解決方法

WebSphereを構成し、EclipseLinkランタイムを使用して、EclipseLink APIを使用して開発されたアプリケーションをデプロイします。

コンポーネント

  • 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.4以降。

  • WebSphere Application Server 7以上。ここで説明する手順は、WebSphere 8.5のものです。

  • Oracle Database、Oracle Express、MySQL、WebSphere Application Serverに組み込まれているいるDerbyデータベースなどの対応するJava Database Connectivity (JDBC)データベース。

ソリューションの概要

WebSphere Application Serverでは、Java Platform, Enterprise Edition (Java EE)が実装されます。WebSphere V8.5はJava EE 6を完全にサポートし、プラグインを介してJava Platform, Standard Edition (Java SE) 7をサポートできます。

EclipseLinkをサポートするようにWebSphereを構成することにより、EclipseLinkが完全にサポートしているJava Persistence API (JPA)およびEclipseLinkの多くの拡張を利用するアプリケーションを作成およびデプロイできます。

ソリューションの実装

IBM WebSphereでEclipseLinkアプリケーションを開発、デプロイおよび実行するには、EclipseLinkを含む様々なモジュールをWebSphereに追加し、WebSphereの様々な局面を構成してEclipseLinkをサポートするようにする必要があります。

この項では、IBM WebSphere Version 7以上でEclipseLinkを使用するその他のタスクについて説明しています。

タスク1: 前提条件

次のコンポーネントがインストールされていることを確認します。

  • IBM WebSphere, Version 7以上。ここで説明する手順は、WebSphereバージョン8.5のものです。

    http://www-01.ibm.com/software/webservers/appserv/was/からIBM WebSphereを入手します。

  • TopLink 12c (12.1.2.0.0)以上。

    http://www.oracle.com/technetwork/middleware/toplink/downloads/index.htmlからTopLinkをダウンロードします。

    次のファイルを使用します。

    • TopLinkクイック・インストーラによって作成されたoracle_common\modules\oracle.toplink_ver_noディレクトリにあるeclipselink.jar

    • TopLinkのクイック・インストーラによって作成されたoracle_common\modulesディレクトリにあるjavax.persistence_ver_no.jar

    EclipseLink 2.4以降。

    http://www.eclipse.org/eclipselink/downloads/からEclipseLinkをダウンロードします。

    次のファイルを使用します。

    • eclipselink.jar

    • javax.persistence_ver_no.jar

タスク2: 永続性ユニットの構成

EclipseLinkを永続性プロバイダとして、またWebSphereをターゲット・サーバーとして使用するには、永続性ユニットを構成します。

例6-1に、コンテナで管理される永続性ユニットの構成例を示します。

例6-1 コンテナで管理される永続性ユニットのpersistence.xmlの例

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
      version="1.0">
    <persistence-unit name="default" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/EclipseLinkDS</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="WebSphere_7"/>
            <property name="eclipselink.target-database"
                value="org.eclipse.persistence.platform.database.oracle.Oracle11Platform"/>
            <property name="eclipselink.validate-existence" value="true"/>
            <property name="eclipselink.weaving" value="true"/>
            <property name="eclipselink.logging.level" value="FINEST"/>
        </properties>
    </persistence-unit>
</persistence>

例6-2に、アプリケーションで管理される永続性ユニットの構成例を示します。

例6-2 アプリケーションで管理される永続性ユニットのサンプルのpersistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">
    <persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <non-jta-data-source>jdbc/ELNonJTADS</non-jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="WebSphere_7"/>
            <property name="eclipselink.target-database" 
                  value="org.eclipse.persistence.platform.database.oracle.Oracle11Platform"/>
            <property name="eclipselink.validate-existence" value="true"/>
            <property name="eclipselink.weaving" value="true"/>
            <property name="eclipselink.logging.level" value="FINEST"/>
        </properties>
    </persistence-unit>
</persistence>

前述の2例について、次を考慮してください。

  • eclipselink.target-serverWebSphere_7は、WebSphere Application Serverバージョン7以上用で使用されています。

  • 永続性スキーマのバージョンpersistence_1_0.xsd" version="1.0"はJPA 1とJPA 2の両方に指定して動作します。JPA 2.nのみのアプリケーションでは、バージョンをpersistence_2_0.xsd" version="2.n"に変更します(WebSphereでは、WebSphere Application Server 7.0.0.9以上でJPA 2をサポートするようになりました)。

タスク3: EclipseLinkを使用するためのサーバーおよびアプリケーションの構成

EclipseLinkをグローバルで利用できるようにするためのサーバーの変更

コンテナおよびアプリケーションで管理される永続ユニットのいずれも、次のいずれかの方法でグローバルにEclipseLinkで使用できるようにできます。

オプション1: グローバルに共有するライブラリの作成(推奨)

  1. 次のファイルを含むグローバルに共有するライブラリを作成します。

    • eclipselink.jar

      このファイルを、TopLinkクイック・インストーラによって作成されたTOPLINK_INSTALLATION\oracle_common\modules\oracle.toplink_ver_noディレクトリから探します。

    • xmlparserv2.jar

      このファイルをクイック・インストーラで作成されたTOPLINK_INSTALLATION\toplink\modulesディレクトリから探します。

    • JPAでNCHARXMLTYPEおよびMDSYS.SDO_GEOMETRYなどのOracle Databaseの機能を使用する場合、共有ライブラリにxdb.jarおよびsdoapi.jarも含める必要があります。これらのファイルはOracle Databaseの配布内にあります。

    WebSphereを使用して共有ライブラリを簡単に作成する方法の詳細は、WebSphereのドキュメントを参照してください。

  2. 共有ライブラリをアプリケーションと関連付けます。

    WebSphereを使用して共有ライブラリとアプリケーションを関連付ける方法については、WebSphereのドキュメントを参照してください。

オプション2: サーバー・ライブラリ拡張としてのEclipseLinkの追加

サーバー・ライブラリの拡張としてEclipseLinkを追加するには、前述のオプション1にあるeclipselink.jarとその他のJARファイルをWAS_HOME\lib\extディレクトリにコピーします。

アプリケーションEARへのEclipseLinkのパッケージ

サーバー構成を変更せず、eclipselink.jarをアプリケーションEARに追加して、コンテナで管理される永続性を実装できます。この場合、永続性ユニットはステートレス・セッションBeanへの@PersistenceContextエンティティ・マネージャ・プロキシの挿入で管理されています。次に、このアプローチの例を示します。

  1. アプリケーションEARの次の場所にeclipselink.jarを追加します。

    EAR_archive/APP-INF/lib/

  2. このパスを、次のようにEJB JARのejbModule/META-INF/MANIFEST.MFファイルのeclipselink.jarに追加します。
    Manifest-Version: 1.0
    Class-Path: APP-INF/lib/eclipselink.jar
    

    これは、エンティティの場所のルートのマニフェストで、この場合はejb.jar.の一部です。

  3. アプリケーションのクラス・ローダーで最初にクラスがロードされるよう、クラス・ローダーを構成します。
  4. アプリケーションをデプロイして起動します。手順については、IBM WebSphereのドキュメントを参照してください。
WARへのEclipseLinkのパッケージ

前述の2つのシナリオで説明するとおり、コンテナで管理される永続性を実装できない場合、アプリケーションで管理されるエンティティ・マネージャを作成できます。この場合、ライブラリのすべての構成およびクラスローダーの範囲の変更をEAR自体内で行う必要があります。

  1. 次の場所のWebアプリケーション・アーカイブ(WAR)ファイルに、eclipselink.jarおよびjavax.persistence_ver_no.jarを追加します。

    WAR_archive/WEB-INF/lib/

  2. アプリケーションのクラス・ローダーで最初にクラスがロードされるよう、アプリケーションのクラス・ローダーの順番を構成します。管理コンソールを使用して、クラス・ローダーの順番を設定する手順の詳細については、WebSphereのドキュメントを参照してください。
  3. アプリケーションをデプロイして起動します。手順については、IBM WebSphereのドキュメントを参照してください。

その他の参考資料

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