OpenJPA の場合、DataCache 実装と QueryCache 実装の両方を構成できます。
始める前に
- 使用する JPA キャッシュ・プラグイン・トポロジーを決定する必要があります。各種構成や
各トポロジーで設定するべきプロパティーの詳細については、JPA レベル 2 (L2) キャッシュ・プラグインを参照してください。
- JPA API を使用するアプリケーションが必要です。WebSphere eXtreme
Scale API を使用して
JPA のデータにアクセスする必要がある場合は、JPA ローダーを使用してください。詳しくは、JPA ローダーの構成を参照してください。
手順
- persistence.xml ファイル内のプロパティーを設定して、OpenJPA キャッシュ・プラグインを構成します。 DataCache 実装または QueryCache 実装でこれらのプロパティーを設定できます。
DataCache および QueryCache 構成は、互いに独立しています。いずれかの構成を使用可能にすることができます。ただし、両方の構成を使用可能にした場合、QueryCache 構成では、DataCache 構成と同じ構成が使用され、その構成プロパティーは廃棄されます。
<property name="openjpa.DataCache"
value="<object_grid_datacache_class(<property>=<value>,...)"/>
または
<property name="openjpa.QueryCache"
value="<object_grid_querycache_class(<property>=<value>,...)"/>
注: QueryCache 構成を使用可能にできるのは、組み込みトポロジーと組み込みイントラドメイン・トポロジーの場合のみです。
ObjectGrid キャッシュ・クラスのプロパティー・リストに ObjectGridName プロパティー、ObjectGridType プロパティー、その他の単純なデプロイメント・ポリシー関連のプロパティーを指定すれば、キャッシュ構成をカスタマイズすることができます。次に例を挙げます。
<property name="openjpa.DataCache"
value="com.ibm.websphere.objectgrid.openjpa.ObjectGridDataCache(
ObjectGridName=BasicTestObjectGrid,ObjectGridType=EMBEDDED,
maxNumberOfReplicas=4)"/>
<property name="openjpa.QueryCache"
value="com.ibm.websphere.objectgrid.openjpa.ObjectGridQueryCache()"/>
<property name="openjpa.RemoteCommitProvider" value="sjvm"/>
設定できるプロパティーのリストについては、
JPA キャッシュ構成プロパティーを参照してください。
- persistence.xml ファイル内では、openjpa.RemoteCommitProvider プロパティーを
sjvm に設定する必要もあります。
<property name="openjpa.RemoteCommitProvider" value="sjvm"/>
- オプション: キャッシュで使用するデータ・グリッドをさらにカスタマイズするには、XML ファイルを
使用して追加設定を指定できます。
ほとんどのシナリオでは、キャッシュ・プロパティーを設定すれば十分です。キャッシュによって使用される ObjectGrid をさらにカスタマイズするには、OpenJPA ObjectGrid 構成 XML ファイルを、
persistence.xml ファイルと同様に META-INF ディレクトリーに提供することができます。
初期化時に、キャッシュはこれらの XML ファイルを検索し、検出されるとそれらのファイルを処理します。
OpenJPA ObjectGrid 構成 XML ファイルには次の 3 つのタイプがあります。
- openjpa-objectGrid.xml (ObjectGrid 構成)
ファイル・パス: META-INF/openjpa-objectGrid.xml
このファイルは、EMBEDDED および EMBEDDED_PARTITION タイプの両方に対して ObjectGrid 構成をカスタマイズする場合に使用されます。REMOTE タイプの場合、このファイルは無視されます。デフォルトでは、各エンティティー・クラスは、ObjectGrid 構成内のエンティティー・クラス名として名付けられた独自の BackingMap 構成にマップされます。例えば、com.mycompany.Employee エンティティー・クラスは、com.mycompany.Employee BackingMap にマップされます。デフォルト BackingMap 構成は、readOnly="false"、copyKey="false"、lockStrategy="NONE"、および copyMode="NO_COPY" です。一部の BackingMap を選択された構成でカスタマイズできます。ALL_ENTITY_MAPS 予約キーワードを使用すれば、openjpa-objectGrid.xml ファイルにリストされた他のカスタマイズ・マップを除くすべてのマップを示すことができます。この openjpa-objectGrid.xml ファイルにリストされていない BackingMap は、デフォルト構成を使用します。カスタマイズされた BackingMaps が BackingMaps 属性またはプロパティーを指定しておらず、それらの属性がデフォルト構成で指定されている場合は、デフォルト構成の属性値が適用されます。例えば、エンティティー・クラスが timeToLive=30 でアノテーションを付けられている場合、そのエンティティーのデフォルトの BackingMap 構成には timeToLive=30 が設定されます。カスタム openjpa-objectGrid.xml ファイルにもその BackingMap が含まれているが、timeToLive 値を指定していない場合、カスタマイズされた BackingMap には、デフォルトで、timeToLive=30 値が設定されます。openjpa-objectGrid.xml ファイルは、デフォルト構成をオーバーライドまたは拡張しようとします。
- openjpa-objectGridDeployment.xml (デプロイメント・ポリシー)
ファイル・パス: META-INF/openjpa-objectGridDeployment.xml
このファイルは、デプロイメント・ポリシーのカスタマイズに使用されます。デプロイメント・ポリシーをカスタマイズする場合、openjpa-objectGridDeployment.xml ファイルが提供されている場合は、デフォルトのデプロイメント・ポリシーは廃棄されます。デプロイメント・ポリシー属性値は、すべて openjpa-objectGridDeployment.xml ファイルから提供されます。
- openjpa-objectGrid-client-override.xml (クライアント ObjectGrid オーバーライド構成)
ファイル・パス: META-INF/openjpa-objectGrid-client-override.xml
このファイルは、クライアント・サイド ObjectGrid のカスタマイズに使用されます。デフォルトでは、ObjectGrid キャッシュは、ニア・キャッシュを使用不可にするデフォルト・クライアント・オーバーライド ObjectGrid 構成を適用します。アプリケーションがニア・キャッシュを必要とする場合、アプリケーションはこのファイルを提供し、numberOfBuckets="xxx" を指定することができます。デフォルトのクライアント・オーバーライドでは、numberOfBuckets="0" を設定し、ニア・キャッシュを使用不可にします。ニア・キャッシュは、openjpa-objectGrid-client-override.xml ファイルによって numberOfBuckets の値をゼロより大きい値に再設定すれば、アクティブにすることができます。
openjpa-objectGrid-client-override.xml ファイルの機能は、
openjpa-objectGrid.xml ファイルに似ています。このファイルは、デフォルトのクライアント ObjectGrid オーバーライド構成をオーバーライドまたは拡張します。
構成された
eXtreme Scale トポロジーに応じて、これらの 3 つの XML ファイルのいずれか任意のファイルを提供してそのトポロジーをカスタマイズすることができます。
EMBEDDED と EMBEDDED_PARTITION のタイプの場合、3 つの XML ファイルの任意のいずれかを提供し、ObjectGrid、デプロイメント・ポリシー、およびクライアント ObjectGrid オーバーライド構成をカスタマイズできます。
REMOTE ObjectGrid の場合、ObjectGrid キャッシュは動的 ObjectGrid を作成しません。代わりにキャッシュは、カタログ・サービスからクライアント・サイドの ObjectGrid を取得するだけです。openjpa-objectGrid-client-override.xml ファイルを提供して、クライアント ObjectGrid オーバーライド構成をカスタマイズできるだけです。
- オプション: (リモート構成のみ) REMOTE ObjectGrid タイプのキャッシュを構成する場合、外部
eXtreme Scale システムをセットアップします。
REMOTE ObjectGrid タイプでキャッシュを構成する場合、外部 eXtreme Scale システムをセットアップする必要があります。外部システムをセットアップするためには、persistence.xml ファイルに基づく ObjectGrid および ObjectGridDeployment 構成 XML ファイルの両方が必要になります。これらの構成ファイルの例については、例: OpenJPA ObjectGrid XML ファイルを参照してください。
タスクの結果
EMBEDDED、EMBEDDED_PARTITION、またはドメイン内構成:
アプリケーションを開始すると、プラグインが
自動的にカタログ・サービスを検出または開始し、コンテナー・サーバーを開始し、コンテナー・サーバーを
カタログ・サービスに接続します。それから、プラグインは、クライアント接続を使用して別のアプリケーション・サーバー・プロセスで実行されている ObjectGrid コンテナーおよびそのピアと通信します。
REMOTE 構成:
デプロイメント・ポリシーは JPA アプリケーションとは
別に指定されます。外部 ObjectGrid システムには、カタログ・サービスおよびコンテナー・サーバー・プロセスの両方があります。コンテナー・サーバーを始動する前に、カタログ・サービスを始動する必要があります。詳しくは、スタンドアロン・サーバーの始動とコンテナー・サーバーの始動 を参照してください。
次のタスク
- この構成を使用する OpenJPA アプリケーションを開発します。詳しくは、例: ObjectGrid キャッシュにデータをプリロードするための Hibernate プラグインの使用を参照してください。
- 実稼働環境の場合、EMBEDDED または EMBEDDED_PARTITION 構成用に自動的に作成されるプロセスの
カタログ・サービス・ドメインを作成します。
- スタンドアロン環境:
WebSphere Application Server プロセス内でサーバーを実行しない場合、カタログ・サービス・ドメインのホストおよびポートは、objectGridServer.properties というプロパティー・ファイルを使用して指定されます。このファイルは、アプリケーションのクラスパスに保管し、catalogServiceEndPoints プロパティーを定義しておく必要があります。カタログ・サービス・ドメインは、アプリケーション・プロセスとは別に開始され、アプリケーション・プロセスが開始される前に開始されなければなりません。
objectGridServer.properties ファイルのフォーマットは次のとおりです。
catalogServiceEndPoints=<hostname1>:<port1>,<hostname2>:<port2>
- WebSphere Application Server 環境:
WebSphere Application Server プロセス内で実行する場合、JPA キャッシュ・プラグインでは、WebSphere Application Server セルに定義されたカタログ・サービスまたはカタログ・サービス・ドメインに自動的に接続します。
- EMBEDDED または EMBEDDED_PARTITION ObjectGridType を Java SEJava SE 環境で使用する場合、組み込み eXtreme Scale サーバーを停止するため、プログラムの末尾に System.exit(0) メソッドを使用してください。そうしないと、プログラムが応答しなくなる可能性があります。