6.10. インメモリデータグリッド連携部品

WebOTX では、高拡張、高可用、高性能な「分散、インメモリー、キーバリューストア」の Infinispan のインメモリデータグリッド製品を活用するための連携部品である JPA プロバイダを提供します。

WebOTX JPA プロバイダでは、利用するデータグリッド製品に応じてモジュールの切り替えを行います。また、WebOTX JPA プロバイダを通して JPA インタフェースを利用することにより、データベースのスキーマ設計を意識せずアプリケーションを開発することができます。
「データプリロード機能」を利用することにより、事前にエンティティをデータグリッドへ登録し、初回アクセス時から応答の性能を向上させることができます。また、困難なパフォーマンスチューニングを容易にするために、JPA の性能情報のプロファイルデータを提供します。
これらの機能を利用するには、統合運用管理ツールの「永続化サービス」で設定を行います。

(※)JPA とは、Java Persistence API の略称です。RDB のデータを扱う Java SE および Java EE のアプリケーションを開発するための Java 用フレームワークです。

6.10.1. WebOTX JPA プロバイダ

アプリケーション開発者向けのフレームワークとして、Infinispan のデータグリッド製品を透過的に扱うことでできる独自の JPA プロバイダを提供しています。
EclipseLink をベースとした WebOTX のキャッシュ実装において、複数のデータグリッド製品の選択を可能とします。データグリッドを利用するための指定も EclipseLink での指定方法に加え、WebOTX 独自の指定方法の提供により JPA エンティティクラスの修正やアプリケーションの再配備をすることなく変更が可能です。
WebOTX キャッシュ実装において、利用するデータグリッド製品に応じてモジュールの切り替えを行う拡張 API を提供します。

6.10.1.1. PersistenceProvider

アプリケーションサーバ WebOTX Application Server Standard、WebOTX Application Server Enterprise の PersistenceProvider の既定値として WebOTX JPA プロバイダが使用されます。
尚、WebOTX Application Server Express は、EclipseLink の JPA プロバイダが使用されます。
他のプロバイダを使用する場合や、スタンドアローンで動作させる場合は、 JPA アプリケーションに付属するディスクリプタ (persistence.xml) 内の <provider> タグにてプロバイダクラスの指定を行います。

6.10.1.2. persistence.xml

persistence.xml とは、JPA エンティティを含んだ永続性アーカイブ・ファイルであることを宣言するディスクリプタです。永続化ユニット情報を定義します。JPA アプリケーション作成の詳細については、 [ アプリケーションの開発 > JPAアプリケーション ] を参照してください。

6.10.1.3. データグリッド製品の選択

WebOTX 上で動作する JPA アプリケーションの L2 キャッシュのバックボーンとなるデータグリッド製品を選択できます。
この方法で設定を変更した場合は、アプリケーションの再配備をすることなくデータグリッドの変更が可能です。ただし、変更前と変更後でキャッシュデータは引き継がれません。
何も指定しない場合は EclipseLink の L2 キャッシュを使用します。

L2 キャッシュとして利用するデータグリッドの設定は、統合運用管理ツールで行います。
統合運用管理ツールの設定値の詳細については、 [ リファレンス > インメモリデータグリッド連携 ] を参照してください。
、データグリッド製品の選択は、[ リファレンス > インメモリデータグリッド連携 > インメモリデータグリッド連携全般の設定項目・設定方法 > インメモリデータグリッド設定 ] で事前にデータグリッドを登録し、設定します。「L2 キャッシュとして利用するデータグリッド」には、このデータグリッド名を指定してください。

6.10.1.4. 永続化サービス

統合運用管理ツールの「永続化サービス」で JPA アプリケーションの永続化の定義を行うことにより永続化サービスを利用することができます。ただし、各 JPA アプリケーションのディスクリプタ (persistence.xml) に設定された永続化ユニット情報が優先されます。
永続化サービスの設定についての詳細は、 [ リファレンス > インメモリデータグリッド連携 ] を参照してください。

6.10.2. データプリロード機能

データプリロード機能を利用して事前にエンティティをデータグリッドへ登録することにより初回アクセスのキャッシュ時間を短縮することができます。また、読込設定や性能情報を利用した効率的な読み込みが可能となります。
統合運用管理ツールの「永続化サービス」の設定でそれぞれのエンティティをデータプリロードの対象とするかどうかの設定を行います。
読み込み対象は、JPA の性能情報のランキングデータを元に、ランキング順に読み込むことも可能です。
データプリロードは、ドメイン起動時、もしくは、運用管理コマンド (otxadmin) のデータプリロード開始 (start-data-preload) コマンドにより実行します。

6.10.2.1. データプリロード機能の設定

データプリロードの設定はドメイン単位に統合運用管理ツールで行います。
データプリロードの設定についての詳細は、 [ リファレンス > データプリロードに関する設定 ] を参照してください。

6.10.2.2. データプリロードの読み込みモード

データプリロードの読み込みは、同期・非同期のどちらか選択できます。
同期の場合はエンティティ単位に1つずつ読み込みを行います。読み込み完了まで、次のエンティティの読み込みを行いません。
非同期の場合は、複数のエンティティを同時に読み込みます。読み込み中にタイムアウトのタイマ値を超えた場合は、その時点までで読み込みを中断します。

6.10.2.3. 読み込み対象の設定

読み込み対象をエンティティ単位に設定します。
エンティティ単位に細かな設定ができます。

6.10.2.4. 分散環境下でのデータプリロード

同一データグリッド内で分散して読み込ませるかを指定します。
同一データグリッド内では、同じアプリケーション構成とする必要があります。

6.10.2.5. データプリロードの読み込み対象の指定

読み込む対象を、エンティティ全て、採取した性能情報から生成したランキング順、または、任意のエンティティ ID を指定する方法から選択できます。
その他、読み込み最大件数、読み込みタイムアウトのタイマ値などが指定できます。
読み込み最大件数を増やした場合、読み込みタイムアウトのタイマ値をチューニングする必要があります。
チューニングの詳細については、 [ 構築・運用 > チューニング > インメモリデータグリッド連携部品 ] を参照してください。

読み込む順序としてJPAランキング情報を利用する場合、既定値では、以下のファイルが利用されます。
${AS_INSTALL}/config/jpa/Profile/Ranking/ENTITY_ranking.dat

JPAランキング情報生成コマンドを複数回実行した場合、ENTITY_ranking.dat ファイルは、最後にコマンドを実行したランキング情報となります。
既存のファイルは、${AS_INSTALL}/config/jpa/Profile/Ranking/backup ディレクトリ配下に、ファイル名を時刻を付与した形式
[ 対象 ]_ranking_[ YYYYMMDDHHmmSS ]
にリネームし、移動します。
データプリロードで利用したいランキング情報のファイル名が、既定値から変更されている場合は、対象とするランキング情報のファイルを明示的に指定してください。

6.10.2.6. 優先度

読み込み対象のエンティティ間で、読み込む優先順位を指定することができます。

6.10.2.7. 次のエンティティの読み込み待ち合わせ

次のエンティティの読み込み処理開始までの時間を指定することができます。「プリロードの読み込みモード」が「非同期」の場合有効です。

6.10.3. 性能情報採取機能

パフォーマンスチューニングに必要な、JPA アプリケーションの性能情報のプロファイルデータを採取する機能、およびそのランキング情報を提供します。
JPAアプリケーションの性能情報を、スレッド、JPA エンティティ、API の3つの視点から採取します。 採取した性能情報の回収は、業務処理に影響を与えないようにするため、専用スレッドを利用し、非同期に実行します。
また、採取した性能情報から、JPA ランキング情報を生成するコマンドを提供します。

6.10.3.1. 性能情報採取

性能情報採取の開始、停止、および、採取情報のリセットコマンドを提供します。操作は、運用管理コマンド、もしくは統合運用管理ツールで行います。統合運用管理ツールの設定値の詳細については、 [ リファレンス > インメモリデータグリッド連携 ] を参照してください。

提供するコマンドを以下に示します。

コマンド名 説明
start-jpa-performanceinfomation 性能情報採取を開始します
stop-jpa-performanceinfomation 性能情報採取を停止します
reset-jpa-performanceinfomation 採取した性能情報をリセットします。
性能情報採取中は実行できません。

運用管理コマンド (otxadmin) を利用する場合、コマンドの詳細については、 [ リファレンス > コマンド > 運用管理コマンド(otxadmin) ] を参照してください。

6.10.3.2. 性能情報データ出力ファイル

性能情報採取で採取したデータは以下のファイルに出力されます。
${AS_DOMAIN}/logs/jpa/Profile/Work/<YYYYMMDDHHmmss>_<PID>_profile.dat

6.10.3.3. 性能情報採取対象 API

以下のクラスが性能情報の採取対象となります。
各クラスのメソッド、および詳細については、 [ JPAの性能情報プロファイルデータ ] を参照してください。

6.10.3.4. JPA ランキング情報生成コマンド

JPA ランキング情報生成コマンド (create-jpa-ranking) を実行することにより、採取した性能情報から、処理時間、もしくは、呼び出し回数で並べ替えたランキング情報を作成します。

コマンドについての詳細は [ リファレンス > コマンド > インメモリデータグリッド連携部品コマンド ] および、 [ JPAの性能情報プロファイルデータ ] を参照してください。

6.10.4. Webアプリケーションのセッションレプリケーション機能

インメモリデータグリッド連携により、Webアプリケーションのセッション情報を Infinispan に登録する機能を提供しています。
セッションレプリケーションに Infinispan を利用した場合、JNDI やデータベースを利用した場合に比べて拡張性が高く、スケールアウトした場合の性能劣化も大幅に抑えることができます。

Infinispan が提供する様々な機能は、統合運用管理ツールから、WebOTX が提供するデータグリッド設定項目においてユーザが容易にカスタマイズすることが可能です。 カスタマイズ可能な項目の詳細については、 [ リファレンス > インメモリデータグリッド連携 ] を参照してください。

Infinispan を利用したセッションレプリケーションの設定方法については、 [ リファレンス > 設定 > Webコンテナ > HTTPセッション管理について > セッションレプリケーション > Infinispan を利用するレプリケーション設定 ] を参照してください。