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 ソースコードのダウンロード

  1. Red Hat カスタマーポータルにアクセスするには、ブラウザーで https://access.redhat.com/home に移動します。
  2. ダウンロード をクリックします。
  3. JBoss Development and Management というラベルの付いたセクションで、Red Hat JBoss Data Grid をクリックします。
  4. Red Hat ログイン フィールドと パスワード フィールドに該当するクレデンシャルを入力し、ログイン をクリックします。
  5. ダウンロード可能なファイルのリストから、Red Hat JBoss Data Grid ${VERSION} Source Code を見つけ、Download をクリックします。ファイルを任意の場所に保存し、解凍します。
  6. 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 アーキタイプの生成

  1. JBoss Data Grid Maven リポジトリーが Red Hat JBoss Data Grid 『Getting Started Guide』に記載された手順に従ってインストールされていることを確認します。
  2. コマンドプロンプトを開き、以下のコマンドを実行して現在のディレクトリーでアーキタイプを生成します。
    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 サーバーにデプロイ

  1. 以下の Java サービスローダーファイル META-INF/services/org.infinispan.persistence.spi.AdvancedLoadWriteStore をモジュールに追加し、以下のように参照をカスタムキャッシュストアクラスに追加します。
    my.package.CustomCacheStore
  2. jar を $JDG_HOME/standalone/deployments/ ディレクトリーにコピーします。
  3. .jar ファイルがサーバーで利用可能な場合は、以下のメッセージがログに表示されます。
    JBAS010287: Registering Deployed Cache Store service for store 'my.package.CustomCacheStore'
  4. 「カスタムキャッシュストア」で示されたように、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 サーバーにデプロイ

  1. 以下のコマンドを実行して JDG サーバーに接続します。
    [$JDG_HOME] $ bin/cli.sh --connect=$IP:$PORT
  2. 以下のコマンドを実行して、.jar ファイルをデプロイします。
    deploy /path/to/artifact.jar

18.9.2.3. オプション 3: JON を使用してカスタムキャッシュストアを追加 (リモートクライアントサーバーモード)

手順18.14 JBoss Operation Network を使用してカスタムキャッシュストア .jar ファイルを JDG サーバーにデプロイ

  1. JON ログインします。
  2. 上部のバーの Bundles に移動します。
  3. New ボタンをクリックし、Recipe ラジオボタンを選択します。
  4. 以下の例のように、ストアを参照するデプロイメントバンドルファイルの内容を挿入します。
    <?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>
  5. Next ボタンを押し Bundle Groups 設定ウィザードページに進み、もう一度 Next ボタンを押します。
  6. ファイルアップローダーでカスタムキャッシュストア .jar ファイルを指定し、Upload を押してファイルをアップロードします。
  7. Next ボタンを押し、Summary 設定ウィザードページに進みます。バンドル設定を終了するために Finish ボタンを押します。
  8. 上部のバーの Bundles タブに戻ります。
  9. 新しく作成されたバンドルを選択し、Deploy ボタンをクリックします。
  10. Destination Name を入力し、適切なリソースグループを選択します。このグループは JDG サーバーでのみ構成される必要があります。
  11. Base Location のラジオボックスグループから Install Directory を選択します。
  12. 下の Deployment Directory テキストフィールドに /standalone/deployments と入力します。
  13. デフォルトのオプションを使用してウィザードを続行します。
  14. サーバーのホストで以下のコマンドを使用してデプロイメントを検証します。
    find $JDG_HOME -name "custom-store.jar"
  15. バンドルが $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 に対してカスタムキャッシュストアをモジュールとして定義し、依存関係としてリストすることにより実現することもできます。