16. インメモリデータグリッド連携

インメモリデータグリッド連携に関する設定について説明します。

16.1. インメモリデータグリッド連携全般の設定項目・設定方法

インメモリデータグリッド連携機能では、分散キャッシュやクラスタ間通信の基盤である Infinispan と JGroup の設定は外部の設定ファイルで定義しています。 MO では参照する設定ファイルを指定することができます。Infinispan と JGroup の詳細な動作設定を行いたい場合は、設定ファイルを直接編集してください。 なお、設定ファイルを編集した場合、反映するにはドメインの再起動が必要です。

16.1.1. インメモリデータグリッド設定

ドメイン共通の設定です。この設定を変更した場合、ドメインを再起動することにより反映されます。

Dottedname : server.data-grids

属性名
(attribute-name)
説明 既定値
Jgroupsファイル名 (Infinispan)
[ infinispan-jgroups-file ]
このドメインで使用する、${INSTANCE_ROOT}/config/datagrid/infinispan ディレクトリにある JGroups の設定ファイルを指定します。 デフォルトでは以下の環境別設定ファイルが用意されています。
  • jgroups-ec2.xml
  • jgroups-kubernetes.xml
  • jgroups-tcp.xml
  • jgroups-udp.xml
jgroups-udp.xml
クラスタ名 (Infinispan)
[ infinispan-cluster-name ]
このドメインで使用する、Infinispan のクラスタ名を指定します。 webotx-infinispan-cluster1

16.1.2. インメモリデータグリッド個別設定

データグリッドごとの設定です。

Dottedname : server.data-grids.data-grid. name

nameはデータグリッド名が設定されます。

16.1.2.1. 一般タブ
属性名
(attribute-name)
説明 既定値
名前
[ name ]
DataGrid の名前です。セッションレプリケーションや永続化サービスの data-grid-name としてこの名前を指定します。 なし
タイプ
[ type ]
DataGrid のタイプを指定します。指定できる値は以下です。
  • disabled
  • infinispan
値に infinispan を設定する場合、Infinispan のライブラリを読み込む設定をしていないとエラーになります。設定手順については [ 提供機能 > インメモリデータグリッド連携 > 事前準備 ] を参照してください。
disabled
アーキタイプ
[ archetype ]
DataGridのアーキタイプを指定します。指定できる値は以下です。
  • standard (標準)
  • high-performance (性能重視)
  • high-available (可用性重視)
この属性を変更することにより、ロードされる Infinispan の設定値が変更されます。 各アーキタイプごとの Infinispan の設定値は「 アーキタイプによる既定値の変更」を参照してください。
standard
JMXエージェント上でロードする
[ use-jmx-agent ]
エージェントプロセスでデータグリッドを動作させるかを指定します。 エージェントプロセスにデータグリッド連携を使用したアプリケーションを配備しない場合は false を指定してください。 true
全てのプロセスグループで使用する
[ use-all-processgroups ]
全てのプロセスグループでデータグリッドを動作させるかを指定します。 プロセスグループにデータグリッド連携を使用したアプリケーションを配備しない場合は false を指定してください。 true

Memo
プロセスグループにシステムプロパティ -Dcom.nec.webotx.enterprise.data-grids.data-grid-names=<データグリッド名> を 設定している場合は、 [ use-all-processgroups ] に false を設定している状態でも、そのプロセスグループに限り システムプロパティに指定したデータグリッドが使用されます。
これにより、特定のプロセスグループだけで任意のデータグリッドを実行することができます。

16.1.2.2. アーキタイプによる既定値の変更

上記既定値はアーキタイプが standard の場合のものです。データグリッド作成時のアーキタイプによって既定値が以下のように設定されます。 また、作成済みのデータグリッドのアーキタイプを変更した場合にも、以下の値に設定変更されます。

standard high-performance high-available
キャッシュモード Distributed Distributed Replicated
動作モード SYNC ASYNC SYNC
L1キャッシュ no yes no
トランザクション yes no yes
データ複製ノード数 2 2 - (全ノード)

16.2. 永続化サービスに関する設定

以下は、MO で設定可能な永続化サービス設定項目の一覧です。

Dottedname :server.persistence-service

16.2.1. 一般設定項目一覧

属性名
(attribute-name)
説明 既定値
L2 キャッシュで使用するデータグリッド
[ data-grid-name ]
L2 キャッシュで使用するデータグリッド名を指定します。 WebOTX 上で動作する JPA アプリケーションの L2 キャッシュのバックボーンとなるデータグリッド製品の既定値となります。
この方法で設定を変更した場合は、アプリケーションの再配備をすることなくデータグリッドの変更が可能です。 ただし、変更前と変更後でキャッシュデータは引き継がれません。
「データグリッド」の設定で、登録した「データグリッド名」を指定してください。何も指定しない場合は EclipseLink の L2 キャッシュを使用します。
尚、データグリッド製品の指定は「データグリッド」の設定で行います。
データグリッドにデータグリッド製品が指定されていない場合は、EclipseLink の L2 キャッシュを使用します。
なし


16.2.2. JPA設定項目一覧

属性名
(attribute-name)
説明 既定値
トランザクションタイプ
[ transaction-type ]
永続化ユニットのトランザクションタイプを指定します。
値は、"JTA" または "RESOURCE_LOCAL" を指定してください。
なし
JTAデータソース
[ jta-datasource ]
有効なJTAデータソース名を指定します。
ターゲットコンテナまたは javax.sql.DataSource のインスタンスでデータソースを 見つけることができる JNDI リソース名を指定してください。
なし
非 JTA データソース
[ non-jta-datasource ]
非 JTA データソース名を指定します。
ターゲットコンテナまたは javax.sql.DataSource のインスタンスでデータソースを 見つけることができる JNDI リソース名を指定してください。
なし
ステートメントのキャッシュサイズ
[ cache-statements-size ]
ステートメントのキャッシュサイズを指定します。
内部ステートメント・キャッシュを使用するときに保有されるステートメントの数を指定します。 値はゼロ、もしくは正の整数である必要があります。
50
ステートメントのキャッシュ
[ cache-statements ]
ステートメントのキャッシュを行うか指定します。
JDBC ステートメントをキャッシュするかどうかを指定します。
EclipseLink の内部接続プーリングを使用している場合は、使用することを推奨します。

有効な値:
true:内部ステートメント・キャッシュを有効にします。
false:内部ステートメント・キャッシュを無効にします。

例:persistence.xml ファイルの例:property Map propertiesMap.put(PersistenceUnitProperties.CACHE_STATEMENTS、"false");
false (行わない)
キャッシュサイズ
[ cache-size ]
キャッシュサイズを指定します。
すべてのエンティティに適用されます。同じプレフィックスを持つ個々の エンティティプロパティによってオーバーライドされる場合があります。 ほとんどのキャッシュタイプの場合、サイズは初期サイズではなく、固定または最大サイズです。
CacheType.SoftCache と CacheType.HardCache のサイズは、サブキャッシュサイズです。
100
キャッシュタイプ
[ cache-type ]
キャッシュタイプの既定値を指定します。 すべてのエンティティに適用されます。
同じプレフィックスを持つ個々のエンティティプロパティによってオーバーライドされる場合があります。
キャッシュの共有を行い、エンティティをキャッシュしたくない場合は、キャッシュのタイプを設定します。
次のいずれかを設定します。

Full:
強参照キャッシュ。永続的にキャッシュされます。

Weak:
弱参照キャッシュ。弱可到達の場合、ガーベージコレクションによる回収の対象になります。

Soft:
ソフト参照キャッシュ。メモリ残量の低下時にキャッシュアウトする参照形態です。リソースの消費率や生存期間に応じて,ガーベージコレクションによる回収の対象になります。

SoftWeak:
ソフト参照と弱参照でキャッシュします。

HardWeak:
強参照と弱参照でキャッシュします。

None:
エンティティオブジェクトをキャッシュしません。
SoftWeak
キャッシュの共有
[ cache-shared ]
キャッシュの共有を行うか指定します。
すべてのエンティティに適用されます。
同じプレフィックスを持つ個々のエンティティプロパティによってオーバーライドされる場合があります。
エンティティをキャッシュしたくない場合は、"false (行わない)"に設定してください
true (行う)
テーブル作成時のサフィックス
[ table-creation-suffix ]
テーブル作成時のサフィックス文字列を指定します。 なし
ターゲットデータベース
[ target-database ]
ターゲットデータベース名を指定します。
AUTO の場合、EclipseLink がデータベースと JDBC メタデータにアクセスして、使用するデータベースを決定します。
WebOTX でサポートする JDBC については、 [ 入門ガイド > JDBC ] を参照してください。
AUTO
ウィービング
[ weaving ]
ウィービングを指定します。
ウィービングは、コンパイル済のJavaクラスのバイトコードを操作する方法です。 JPA エンティティと Plain Old Java Object(POJO) クラスの両方のパフォーマンスを向上するために、 内部最適化、遅延ロード、強力なリレーションシップ上の間接参照、変更追跡、フェッチグループ などの操作にウィービングを使用します。
以下の値が指定できます

TRUE:
動的ウィービングを行います。

FALSE:
ウィービングを無効化します。

STATIC:
静的ウィービングを行います。
true (動的ウィービングを行う)
内部最適化のためのウィービング
[ weaving-internal ]
内部最適化のためのウィービングを行うか指定します。 true (行う)
遅延ロードのためのウィービング
[ weaving-lazy ]
遅延ロードのためのウィービングを行うか指定します。
true (行う)
強力なリレーションシップ上の間接参照のためのウィービング
[ weaving-eager ]
強力なリレーションシップ上の間接参照のためのウィービングを行うか指定します。 false (行わない)
変更追跡のためのウィービング
[ weaving-change-tracking ]
変更追跡のためのウィービングを行うか指定します。 true (行う)
フェッチグループのためのウィービング
[ weaving-fetchgroups ]
フェッチグループのためのウィービングを行うか指定します。 true (行う)
永続化コンテキストの参照モード
[ persistence-context-reference-mode ]
永続化コンテキストの参照モードを指定します。
以下のモードが指定できます。

HARD:
ハード参照を使用してすべてのオブジェクトが参照されます。

WEAK:
アクティブ属性の変更追跡をサポートするオブジェクトへの参照は、弱参照によって保持されます。

FORCE_WEAK:
変更追跡の対象外であるオブジェクトを含むすべてのオブジェクトは、弱参照によって保持されます。
HARD
悲観的ロックのタイムアウト時間
[ pessimistic-lock-timeout ]
悲観的ロックのタイムアウト時間 (ミリ秒) を指定します。
悲観的ロックでのタイムアウトを設定します。データベースクエリは、タイムアウトを 超えた場合データベースクエリを終了して例外が返されます。
有効な値は、0 またはそれ以上の整数です。
0を指定した場合は、タイムアウトしません。
0 (タイムアウトしない)
クエリ実行時のタイムアウト時間
[ query-timeout ]
クエリ実行時のタイムアウト時間 (ミリ秒) を指定します。
デフォルトのクエリタイムアウト値を設定します。

有効な値は、0 またはそれ以上の整数です。
0を指定した場合は、タイムアウトしません。
0 (タイムアウトしない)


16.2.3. 性能情報設定項目一覧

属性名
(attribute-name)
説明 既定値
性能情報採取ステータス
[ performance-statistics-status ]
性能情報採取ステータスです。以下の値が設定されます。
停止
起動中
なし
性能情報採取フラグ
[ performance-statistics-flag ]
性能情報採取を行うか指定します。 false (行わない)


16.3. データプリロードに関する設定

以下は、MO で設定可能なデータプリロード設定項目の一覧です。

Dottedname :server.persistence-service.data-pre-loads


16.3.1. 設定項目一覧

属性名
(attribute-name)
説明 既定値
データプリロードを実行する
[ data-pre-load-enabled ]
サービスの開始時にデータのプリロードを実行するか指定します。
false (行わない)
データプリロードのタイムアウトまでの時間
[ data-pre-load-timeout ]
データプリロードのタイムアウトまでの時間を設定します。単位は分です。
指定時間経過した場合、データプリロードを中断します。
0 を指定した場合は、タイムアウトしません。
30
読込モード
[ reading-mode ]
読込モードを設定します。

同期:読み込みを同期で行います。
非同期:非同期で読み込みます。
同期
ランキングデータのパス
[ rankingdata-file-path ]
ランキングデータのファイルパスを指定します。 なし


16.4. データプリロード対象エンティティに関する設定

以下は、MO で設定可能なデータプリロード対象エンティティ設定項目の一覧です。

Dottedname :server.persistence-service.data-pre-loads.persistence-unit._wo_dotted_.data-pre-load._wo_dotted_


16.4.1. 設定項目一覧

属性名
(attribute-name)
説明 既定値
エンティティ名
[ name ]
エンティティ名が設定されます。
エンティティ名 (完全修飾名)
[ entity-fqcn ]
エンティティの (完全修飾名) FQCNが設定されます。
データプリロード対象
[ data-pre-load-enabled ]
データプリロードの対象エンティティとするか指定します。 false (対象としない)
分散環境下でデータプリロードを実行
[ distribute-preload-enabled ]
分散環境でデータプリロードを行うか指定します。 false (行わない)
プリロード対象エンティティ ID 指定方法
[ target-entity ]
エンティティIDによる読込データを指定します。
以下の方法が指定できます。

すべて:
全てのエンティティIDを読み込みます。
ランキング順:
「最大読み込み件数」の件数分を、ランキング順に読み込みます。
任意:
指定されたエンティティIDを読み込みます。
すべて
プリロード対象エンティティID
[ target-entity-id ]
プリロード対象のエンティティIDを指定します。
複数のエンティティIDを指定する場合は、セパレータとして",(カンマ)"で区切ります。
なし
最大読み込み件数
[ max-read-count ]
このエンティティでプリロード可能なデータ件数を指定します。
正の整数を指定します。
1000
読み込み待ち合わせ時間
[ transition-threshold ]
次のエンティティの読み込み待ち合わせの時間を指定します。単位は秒です。
有効な値は、0 またはそれ以上の整数です。
0を指定した場合は、同期モードと同じになります。
60
同期タイムアウト
[ synchronous-timeout ]
読込処理のタイムアウト時間を指定します。単位は秒です。
有効な値は、0 またはそれ以上の整数です。
0を指定した場合は、タイムアウトしません。
60
優先度
[ priority ]
プリロードする優先順位を指定します。
数値が小さいほど優先度が高くなります。 正の整数を指定します。
100
プリロードの状態
データプリロードの状態が示されます。

項目 説明
STATUS 状態 [ INIT | LOADING | DONE | ERROR ]

INIT: 読み込み開始待ち
LOADING: 読み込み中
DONE: 読み込み正常終了
ERROR: 読み込み異常終了
START TIME 開始時間 (YYYY/MM/dd HH:mm:ss:SSS)
END TIME 終了時間 (YYYY/MM/dd HH:mm:ss:SSS)
APPNAME アプリケーション名
UNITNAME 永続化ユニット名
なし