JCache (Payara 4.1.153) - khasunuma/Payara GitHub Wiki
このページでは Payara 4.1.153 の JCache 機能の使い方について説明します。 Payara の JSR 107 (JCache) 実装は Hazelcast です。
このドキュメント全体で、パスの表現はすべて Unix/Linux ファイル・パス構造 (スラッシュ前置) を使用します。
以下のセクションでは JCache へのアクセス方法と使用方法をコードを交えて説明します。
Cache を作成するには、CachingProvider と CacheManager が必要です。Payara の埋め込み Hazelcast には CachingProvider と CacheManager が JNDI で登録されており、これらを新たに作成する必要はありません。これらにアクセスするには、以下のようにいくつかのクラスをインポートし、2 つの変数を初期化します:
import javax.cache.spi.CachingProvider;
import javax.cache.CacheManager;
...
Context ctx = new InitialContext();
CachingProvider provider = (CachingProvider) ctx.lookup("payara/CachingProvider");
CacheManager manager = (CacheManager) ctx.lookup("payara/CacheManager");
Payara に埋め込まれた CachingProvider と CacheManager へアクセスするには、インジェクションを利用することも可能です。アプリケーションへのインジェクションは以下のように行います (注: war または jar は暗黙的または明示的に Bean Archive でなけければなりません。すなわち、Bean Definition アノテーションをふかした CDI Bean、EJB セッション Bean または beans.xml ファイルのいずれかが含まれている必要があります):
import javax.cache.CacheManager;
import javax.cache.spi.CachingProvider;
import javax.inject.Inject;
...
@Inject
CacheManager manager;
@Inject
CachingProvider provider;
キャッシュの作成には CacheManager の getCache
メソッド呼び出しか、またはインジェクションを利用することができます。インジェクションを利用してキャッシュを作成するには前述の Caching Provider と Cache Manager を使用します。
インジェクションを利用したキャッシュの作成は以下のように行います:
import javax.inject.Inject;
import javax.cache.Cache;
...
@Inject
Cache cache;
このキャッシュの名前はクラスの別名となります。この方法によるキャッシュの作成は JMX の統計と管理が有効になります。
インジェクションを利用したキャッシュの作成時に名前やその他の属性を設定することも可能で、その場合は @NamedCache
アノテーションを使用します。
キャッシュの作成時にカスタム値としてカンマ区切りのリストを NamedCache
アノテーションのパラメータとして設定することもできます。
例えば、キャッシュをカスタム名と JMX 管理を有効にしてインジェクトする場合には以下のようにします:
import fish.payara.cdi.jsr107.impl.NamedCache;
import javax.inject.Inject;
import javax.cache.Cache;
...
@NamedCache(cacheName = "custom", managementEnabled = true)
@Inject
Cache cache;
パラメータの完全な配列に関しては 付録 セクションの NamedCache を参照してください。
Payara で JCache アノテーションのすべてを利用できるようにするためには、インターセプターを実装する必要があります。 該当する JCache アノテーションは以下の通りです:
- @CachePut - 特定のキーと値の組をキャッシュへ Put する。
- @CacheRemove - 特定のキーと値の組をキャッシュから削除する。
- @CacheResult - 特定のキーを持つ値を取得する。
- @CacheRemoveAll - すべてのキーと値の組をキャッシュから削除する。
- @CacheDefaults - CacheResult、CachePut、CacheRemove、CacheRemoveAll のクラスレベルでのデフォルト構成を許可する。
- @CacheKey - メソッド引数がキャッシュのキーであるとマークする。
- @CacheValue - メソッド引数がキャッシュの値であるとマークする。
構成オプション | 説明 | 既定値 |
---|---|---|
String cacheName |
キャッシュ名を設定する。 | インジェクトされるキャッシュから受け取るクラス別名 |
Class keyClass |
クラスのキャッシュ・キーを設定する。 | Object.class |
Class valueClass |
クラスのキャッシュ値を設定する。 | Object.class |
boolean statisticsEnabled |
JMX 統計を有効化または無効化する。 | false |
boolean managementEnabled |
JMX 管理を有効化または無効化する。 | false |
boolean readThrough |
読み取りキャッシュを有効化または無効化する。true が設定された場合は CacheLoader ファクトリ・クラスを指定しなければならない。 | false |
boolean writeThrough |
書き込みキャッシュを有効化または無効化する。true が設定された場合は CacheWriter ファクトリ・クラスを指定しなければならない。 | false |
Class cacheLoaderFactoryClass |
CacheLoader ファクトリ・クラスにキャッシュを追加する。 | 指定されない場合にはこのオプションは使用されない。 |
Class cacheWriterFactoryClass |
CacheWriter ファクトリ・クラスにキャッシュを追加する。 | 指定されない場合にはこのオプションは使用されない。 |
Class expiryPolicyFactoryClass |
ExpiryPolicy ファクトリ・クラスにキャッシュを追加する。 | 指定されない場合にはこのオプションは使用されない。 |