OSCacheではキャッシュの振る舞いに関する設定をクラスパスルートのoscache.propertiesという設定ファイルで行います。以前の日記で一度書いたのですが、消えてしまったのでメモを兼ねてもう一度書いておきます。ちなみにOSCacheの設定ファイルリファレンスの原文はこちらです。
- cache.memory
- メモリキャッシュを行うかどうかをtrueまたはfalseで指定します。デフォルトはtrueです。
- cache.capacity
- キャッシュを保持する最大数を指定します。デフォルトは無制限です。
- cache.algorithm
- キャッシュアルゴリズムを指定します。キャッシュサイズが指定されない場合、このプロパティの設定内容に関わらず無制限のキャッシュになります。キャッシュサイズを指定して、かつこのプロパティを指定しない場合、キャッシュアルゴリズムはcom.opensymphony.oscache.base.algorithm.LRUCacheになります。OSCacheにはこの他に以下のアルゴリズムが用意されています。
- com.opensymphony.oscache.base.algorithm.LRUCache - 最後にアクセスされてから最も時間が経っているものから削除されます。
- com.opensymphony.oscache.base.algorithm.FIFOCache - 最初に追加されたものから削除されます。
- com.opensymphony.oscache.base.algorithm.UnlimitedCache - 無制限にキャッシュします。キャッシュされたエントリが自動的に削除されることはありません。
- cache.blocking
- キャッシュエントリの更新中に他のスレッドをブロックするかどうかをtrueまたはfalseで指定します。デフォルトはfalseで、キャッシュの更新中に他のスレッドがアクセスすると古い内容を返します。
- cache.unlimited.disk
- ディスクキャッシュを無制限に行うかどうかをtrueまたはfalseで指定します。デフォルトはfalseです。falseの場合、ディスクにキャッシュされるエントリ数はcache.capacityで指定した値になります。
- cache.persistence.class
- キャッシュの永続化を行うクラスを指定します。指定するクラスはPersistenceListenerインターフェースを実装している必要があります。OSCacheはファイルシステムに永続化する実装としてcom.opensymphony.oscache.plugins.diskpersistence.HashDiskPersistenceListenerを提供しています。
- cache.path
- キャッシュを保存するディレクトリを指定します。ディレクトリが存在しない場合は自動的に作成されますが、OSCacheがこのディレクトリに書き込める権限を持っている必要があります。また、異なるキャッシュで同じキャッシュディレクトリを共有することはできません。
- cache.persistence.overflow.only
- キャッシュがメモリキャッシュの最大数をこえた場合のみ永続化を行うかどうかを指定します。広報互換性のためにデフォルトはfalseになっていますが、推奨の設定値はtrueです。
- cache.event.listeners
- リスナのクラス名をカンマ区切りで指定します。指定するクラスは以下のいずれか(または両方の)インターフェースを実装している必要があります。
- CacheEntryEventListener - キャッシュの追加、更新、フラッシュ、削除イベントを受け取ります。
- CacheMapAccessEventListener - キャッシュアクセスのイベントを受け取ります。このリスナはキャッシュの有効率などの統計を取るために利用できます。
デフォルトではリスナは設定されていません。OSCacheは以下のリスナを提供しています。
- com.opensymphony.oscache.plugins.clustersupport.BroadcastingCacheEventListener - OSCacheのクラスタリングを実現するためのリスナです。このリスナに関する詳細はClustering OSCacheを参照してください。
- com.opensymphony.oscache.extra.CacheEntryEventListenerImpl - キャッシュの生存期間中に発生するすべてのエントリイベントを保持するリスナーの実装です。
- com.opensymphony.oscache.extra.CacheMapAccessEventListenerImpl - キャッシュインスタンスで発生するすべてのキャッシュマップイベント(キャッシュヒット、ミス、古すぎて消去されたエントリに対するヒット)の数を記録する簡単なリスナーです。
- cache.key
- アプリケーション・セッションスコープにキャッシュオブジェクトを保存するのにServletCacheAdministrator(そしてカスタムタグ)によって使用されるキーです。省略した場合のデフォルト値は"__oscache_cache"です。このデフォルト値はcom.opensymphony.oscache.web.ServletCacheAdministrator.DEFAULT_CACHE_KEYで定義されています。
- cache.use.host.domain.in.key
- 自動生成されるキャッシュキーにホスト名の情報を含めるかどうかをtrueまたはfalseで指定します。サーバが複数のホストで構成されている場合に使用します。
追加のプロパティ
oscache.propertiesには上記以外のプロパティを定義し、あなたのイベントハンドラに反映することができます。 例えば、JavaGroupsBroadcastingListenerは、以下の追加プロパティをサポートしています:
- cache.cluster.multicast.ip
- このキャッシュクラスタで使用するマルチキャストIP。デフォルトは231.12.21.132です。
- cache.cluster.properties
- クラスタリングのための追加設定オプションを指定します。 デフォルトの設定は以下の通りです。
UDP(mcast_addr=231.12.21.132;mcast_port=45566;ip_ttl=32;\ mcast_send_buf_size=150000;mcast_recv_buf_size=80000):\ PING(timeout=2000;num_initial_members=3):\ MERGE2(min_interval=5000;max_interval=10000):\ FD_SOCK:VERIFY_SUSPECT(timeout=1500):\ pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800;max_xmit_size=8192):\ UNICAST(timeout=300,600,1200,2400):\ pbcast.STABLE(desired_avg_gossip=20000):\ FRAG(frag_size=8096;down_thread=false;up_thread=false):\ pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_local_addr=true)
これらの2つのプロパティについての詳細はClusteringのドキュメントを参照してください。