18.9. カスタムキャッシュストア
カスタムキャッシュストアは Red Hat JBoss Data Grid のキャッシュストアのカスタマイズされた実装です。
カスタムキャッシュストア (またはローダー) を作成するには、必要に応じて以下のインターフェースのすべてまたはサブセットを実装します。
CacheLoader
CacheWriter
AdvancedCacheLoader
AdvancedCacheWriter
ExternalStore
AdvancedLoadWriteStore
インターフェースの個々の機能については、「キャッシュローダーとキャッシュライター」を参照してください。
注記
AdvancedCacheWriter
が実装されない場合は、該当するライターを使用して、失効したエントリーをパージまたはクリアできません。
注記
AdvancedCacheLoader
が実装されない場合、該当するローダーに格納されたエントリーはプリロードおよびマップ/削減の反復に使用されません。
既存のキャッシュストアを新しい API に移行するか、新しいストア実装を作成するには、
SingleFileStore
などを使用します。SingleFileStore
サンプルコードを参照するには、JBoss Data Grid ソースコードをダウンロードします。
以下の手順に従って、カスタマーポータルから
SingleFileStore
サンプルコードをダウンロードします。
手順18.10 JBoss Data Grid ソースコードのダウンロード
- Red Hat カスタマーポータルにアクセスするには、ブラウザーで https://access.redhat.com/home に移動します。
- JBoss Development and Management というラベルの付いたセクションで、 をクリックします。
- Red Hat ログイン フィールドと パスワード フィールドに該当するクレデンシャルを入力し、 をクリックします。
- ダウンロード可能なファイルのリストから、Red Hat JBoss Data Grid ${VERSION} Source Code を見つけ、 をクリックします。ファイルを任意の場所に保存し、解凍します。
jboss-datagrid-6.6.0-sources/infinispan-6.4.0.Final-redhat-4-src/core/src/main/java/org/infinispan/persistence/file/SingleFileStore.java
に移動してSingleFileStore
ソースコードを見つけます。
18.9.1. カスタムキャッシュストアの Maven アーキタイプ
カスタムキャッシュストアの開発は、Maven アーキタイプを使用して簡単に始めることができます。アーキタイプを作成すると、正しいディレクトリーレイアウトとサンプルコードとともに新しい Maven プロジェクトが生成されます。
手順18.11 Maven アーキタイプの生成
- JBoss Data Grid Maven リポジトリーが Red Hat JBoss Data Grid 『Getting Started Guide』に記載された手順に従ってインストールされていることを確認します。
- コマンドプロンプトを開き、以下のコマンドを実行して現在のディレクトリーでアーキタイプを生成します。
mvn -Dmaven.repo.local="path/to/unzipped/jboss-datagrid-6.6.0-maven-repository/" archetype:generate -DarchetypeGroupId=org.infinispan -DarchetypeArtifactId=custom-cache-store-archetype -DarchetypeVersion=6.4.0.Final-redhat-4
注記
読みやすさのために上記のコマンドは複数の行に分割されています。ただし、実行する場合は、このコマンドとすべての引数を 1 つの行で指定する必要があります。
18.9.2. カスタムキャッシュストアの設定 (リモートクライアントサーバーモード)
以下は、Red Hat JBoss Data Grid のリモートクライアントサーバーモードにおけるカスタムキャッシュストアの設定例になります。
例18.2 カスタムキャッシュストアの設定
<distributed-cache name="cacheStore" mode="SYNC" segments="20" owners="2" remote-timeout="30000"> <store class="my.package.CustomCacheStore"> <properties> <property name="customStoreProperty" value="10" /> </properties> </store> </distributed-cache>
この設定例で使用された要素とパラメーターの詳細については、「キャッシュストア設定の詳細 (リモートクライアントサーバーモード)」を参照してください。
18.9.2.1. オプション 1: デプロイメントを使用してカスタムキャッシュストアを追加 (リモートクライアントサーバーモード)
手順18.12 デプロイメントを使用してカスタムキャッシュストア .jar ファイルを JDG サーバーにデプロイ
- 以下の Java サービスローダーファイル
META-INF/services/org.infinispan.persistence.spi.AdvancedLoadWriteStore
をモジュールに追加し、以下のように参照をカスタムキャッシュストアクラスに追加します。my.package.CustomCacheStore
- jar を
$JDG_HOME/standalone/deployments/
ディレクトリーにコピーします。 - .jar ファイルがサーバーで利用可能な場合は、以下のメッセージがログに表示されます。
JBAS010287: Registering Deployed Cache Store service for store 'my.package.CustomCacheStore'
- 「カスタムキャッシュストア」で示されたように、
infinispan-core
サブシステムで、インターフェースをオーバーライドするクラスを指定してcache-container
内部にキャッシュのエントリーを追加します。<subsystem xmlns="urn:infinispan:server:core:6.2"> [...] <distributed-cache name="cacheStore" mode="SYNC" segments="20" owners="2" remote-timeout="30000""> <store class="my.package.CustomCacheStore"> <!-- If custom properties are included these may be specified as below --> <property name="customStoreProperty">10</property> </store> </distributed-cache> [...] </subsystem>
18.9.2.2. オプション 2: CLI を使用してカスタムキャッシュストアを追加 (リモートクライアントサーバーモード)
手順18.13 CLI を使用してカスタムキャッシュストア .jar ファイルを JDG サーバーにデプロイ
- 以下のコマンドを実行して JDG サーバーに接続します。
[$JDG_HOME] $ bin/cli.sh --connect=$IP:$PORT
- 以下のコマンドを実行して、.jar ファイルをデプロイします。
deploy /path/to/artifact.jar
18.9.2.3. オプション 3: JON を使用してカスタムキャッシュストアを追加 (リモートクライアントサーバーモード)
手順18.14 JBoss Operation Network を使用してカスタムキャッシュストア .jar ファイルを JDG サーバーにデプロイ
- JON ログインします。
- 上部のバーの
Bundles
に移動します。 New
ボタンをクリックし、Recipe
ラジオボタンを選択します。- 以下の例のように、ストアを参照するデプロイメントバンドルファイルの内容を挿入します。
<?xml version="1.0"?> <project name="cc-bundle" default="main" xmlns:rhq="antlib:org.rhq.bundle"> <rhq:bundle name="Mongo DB Custom Cache Store" version="1.0" description="Custom Cache Store"> <rhq:deployment-unit name="JDG" compliance="full"> <rhq:file name="custom-store.jar"/> </rhq:deployment-unit> </rhq:bundle> <target name="main" /> </project>
Next
ボタンを押しBundle Groups
設定ウィザードページに進み、もう一度Next
ボタンを押します。- ファイルアップローダーでカスタムキャッシュストア
.jar
ファイルを指定し、Upload
を押してファイルをアップロードします。 Next
ボタンを押し、Summary
設定ウィザードページに進みます。バンドル設定を終了するためにFinish
ボタンを押します。- 上部のバーの
Bundles
タブに戻ります。 - 新しく作成されたバンドルを選択し、
Deploy
ボタンをクリックします。 Destination Name
を入力し、適切なリソースグループを選択します。このグループは JDG サーバーでのみ構成される必要があります。Base Location
のラジオボックスグループからInstall Directory
を選択します。- 下の
Deployment Directory
テキストフィールドに/standalone/deployments
と入力します。 - デフォルトのオプションを使用してウィザードを続行します。
- サーバーのホストで以下のコマンドを使用してデプロイメントを検証します。
find $JDG_HOME -name "custom-store.jar"
- バンドルが
$JDG_HOME/standalone/deployments
にインストールされていることを確認します。
上記の手順が完了したら、.jar ファイルが正常にアップロードされ、JDG サーバーによって登録されます。
18.9.3. カスタムキャッシュストアの設定 (ライブラリーモード)
以下は、Red Hat JBoss Data Grid のライブラリーモードにおけるカスタムキャッシュストアの設定例になります。
例18.3 カスタムキャッシュストアの設定
<persistence> <store class="org.infinispan.custom.CustomCacheStore" preload="true" shared="true"> <properties> <property name="customStoreProperty" value="10" /> </properties> </store> </persistence>
この設定例で使用された要素とパラメーターの詳細については、「キャッシュストア設定の詳細 (ライブラリモード)」を参照してください。
注記
カスタムキャッシュストアクラスは、Red Hat JBoss Data Grid が使用されるクラスパスに指定する必要があります。ほとんどの場合、これは、カスタムキャッシュストアをアプリケーションとともにパッケージ化することにより実現されます。ただし、これは Red Hat JBoss Enterprise Application Platform 『管理および設定ガイド』で説明されたように、EAP に対してカスタムキャッシュストアをモジュールとして定義し、依存関係としてリストすることにより実現することもできます。