この章では、Oracle TopLinkをIBM WebSphere Application Serverにデプロイされたアプリケーションの永続性プロバイダとして使用する方法を説明します。
この章の内容は次のとおりです。
ユース・ケース
TopLinkは、WebSphere Application Serverを含む多くの一般的なJava EEアプリケーション・サーバーで使用できます。
解決方法
WebSphereを構成し、EclipseLinkランタイムを使用して、EclipseLink APIを使用して開発されたアプリケーションをデプロイします。
コンポーネント
TopLink 12cリリース1 (12.1.2)以上。
注意: TopLinkのコア機能は、オープン・ソースのEclipse Foundationの永続性フレームワークであるEclipseLinkによって提供されています。EclipseLinkでは、Java Persistence API (JPA)、Java Architecture for XML Binding (JAXB)、および標準に基づいたその他の永続性テクノロジと、それらの標準の拡張が実装されます。TopLinkには、EclipseLinkのすべてに加え、Oracleの追加機能が含まれています。 |
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を使用するその他のタスクについて説明しています。
次のコンポーネントがインストールされていることを確認します。
IBM WebSphere, Version 7以上。ここで説明する手順は、WebSphereバージョン8.5のものです。
http://www-01.ibm.com/software/webservers/appserv/was/
からIBM WebSphereを入手します。
TopLink 12cリリース1 (12.1.2)以上。
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を永続性プロバイダとして、また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-server
値WebSphere_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をサポートするようになりました)。
次は、アプリケーション・サーバーでEclipseLinkを使用する典型的なシナリオです。
コンテナおよびアプリケーションで管理される永続ユニットのいずれも、次のいずれかの方法でグローバルにEclipseLinkで使用できるようにできます。
オプション1: グローバルに共有するライブラリの作成(推奨)
次のファイルを含むグローバルに共有するライブラリを作成します。
eclipselink.jar
このファイルを、TopLinkクイック・インストーラによって作成されたTOPLINK_INSTALLATION
\oracle_common\modules\oracle.toplink_
ver_no
ディレクトリから探します。
xmlparserv2.jar
このファイルをクイック・インストーラで作成されたTOPLINK_INSTALLATION
\toplink\modules
ディレクトリから探します。
JPAでNCHAR
、XMLTYPE
およびMDSYS.SDO_GEOMETRY
などのOracle Databaseの機能を使用する場合、共有ライブラリにxdb.jar
およびsdoapi.jar
も含める必要があります。これらのファイルはOracle Databaseの配布内にあります。
WebSphereを使用して共有ライブラリを簡単に作成する方法の詳細は、WebSphereのドキュメントを参照してください。
共有ライブラリをアプリケーションと関連付けます。
WebSphereを使用して共有ライブラリとアプリケーションを関連付ける方法については、WebSphereのドキュメントを参照してください。
オプション2: サーバー・ライブラリ拡張としてのEclipseLinkの追加
サーバー・ライブラリの拡張としてEclipseLinkを追加するには、前述のオプション1にあるeclipselink.jar
とその他のJARファイルをWAS_HOME
\lib\ext
ディレクトリにコピーします。
サーバー構成を変更せず、eclipselink.jar
をアプリケーションEARに追加して、コンテナで管理される永続性を実装できます。この場合、永続性ユニットはステートレス・セッションBeanへの@PersistenceContext
エンティティ・マネージャ・プロキシの挿入で管理されています。次に、このアプローチの例を示します。
アプリケーションEARの次の場所にeclipselink.jar
を追加します。
EAR_archive
/APP-INF/lib/
このパスを、次のようにEJB JARのejbModule
/META-INF/MANIFEST.MF
ファイルのeclipselink.jar
に追加します。
Manifest-Version: 1.0 Class-Path: APP-INF/lib/eclipselink.jar
これは、エンティティの場所のルートのマニフェストで、この場合はejb.jar.
の一部です。
アプリケーションのクラス・ローダーで最初にクラスがロードされるよう、クラス・ローダーを構成します。
アプリケーションをデプロイして起動します。手順については、IBM WebSphereのドキュメントを参照してください。
前述の2つのシナリオで説明するとおり、コンテナで管理される永続性を実装できない場合、アプリケーションで管理されるエンティティ・マネージャを作成できます。この場合、ライブラリのすべての構成およびクラスローダーの範囲の変更をEAR自体内で行う必要があります。
次の場所のWebアプリケーション・アーカイブ(WAR)ファイルに、eclipselink.jar
およびjavax.persistence_
ver_no
.jar
を追加します。
WAR_archive
/WEB-INF/lib/
アプリケーションのクラス・ローダーで最初にクラスがロードされるよう、アプリケーションのクラス・ローダーの順番を構成します。管理コンソールを使用して、クラス・ローダーの順番を設定する手順の詳細については、WebSphereのドキュメントを参照してください。
アプリケーションをデプロイして起動します。手順については、IBM WebSphereのドキュメントを参照してください。
この章のソリューションが実装されているその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。
http://www-01.ibm.com/software/webservers/appserv/was/
のWebSphere Application Server。