第9章 キャッシュローダー


JBoss Cache は CacheLoader を使用してインメモリキャッシュをバックエンドデータストアにバックアップすることができます。 JBoss Cache にキャッシュローダーが設定されている場合は、 以下の機能が提供されます。
  • キャッシュ要素がアクセスされ、要素がキャッシュに存在しない場合 (エビクションやサーバー再起動が原因の場合など) は、キャッシュローダーが要素をキャッシュに透過的にロードします (要素がバックエンドストアにある場合)。
  • 要素が変更、 追加、 削除されると、 その変更はキャッシュローダーを介してバックエンドストアに保持されます。 トランザクションを使用する場合、 トランザクション内で作成されたすべての変更は保持されます。 この場合、 CacheLoader はトランザクションマネージャにより実行された 2 相コミットプロトコルで実行されますが、 明示的には実行されません。

9.1. CacheLoader インターフェースとライフサイクル

CacheLoader インターフェース

図9.1 CacheLoader インターフェース

JBoss Cache と CacheLoader 実装の対話は次のように行われます。 CacheLoaderConfiguration (下記参照) は null 以外の値を持ちます。 設定された各 cacheloader のインスタンスは、 キャッシュの作成時に作成され、 キャッシュの起動時に起動します。
キャッシュの起動時に CacheLoader.create()CacheLoader.start() が呼び出されます。 また、 キャッシュの終了時には stop()destroy() が呼び出されます。
次に、 setConfig()setCache() が呼び出されます。 setCache() は、キャッシュへの参照を保存するため使用され、 setConfig()CacheLoader のこのインスタンスを設定するために使用されます。 たとえば、 この例ではキャッシュローダーがデータベースへの接続を確立できます。
CacheLoader インターフェースには、 トランザクションが使用されない場合に呼び出される get()put()remove()removeData() メソッドがあります。 これらのメソッドは値を即座に取得 (get())、 設定(put())、 削除 (remove()removeData()) します。 これらのメソッドについては、 インターフェースの javadoc コメントで説明されています。
また、 トランザクションで使用されるメソッドには prepare()commit()rollback() の 3 つがあります。 prepare() メソッドは、 トランザクションがコミットされる時に呼び出され、 引数としてトランザクションオブジェクトと変更のリストを持ちます。 トランザクションオブジェクトは、 値が変更のリストであるトランザクションのハッシュマップへのキーとして使用できます。 各変更リストは、 あるトランザクションに対するキャッシュへの変更を表す複数の Modification 要素を持ちます。 prepare() が正常に値を返した場合、 キャッシュローダーはトランザクションを正常にコミット (またはロールバック) できるはずです。
JBoss Cache はキャッシュローダー上で prepare() や commit()、 rollback() を適時に呼び出します。
commit() メソッドはキャッシュローダーがトランザクションをコミットするよう指示し、rollback() メソッドはキャッシュローダーがそのトランザクションに関連する変更を破棄するよう指示します。
各メソッドや必要なコントラクト実装の詳細は、 このインターフェースに関する javadoc を参照してください。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る