Ehcache

Ehcacheの自動ピア・ディスカバリ周りのコードを読んでみる(その4)

MulticastKeepaliveHeartbeatReceiver$MulticastReceiverThread ハートビートを受け取るのは、CacheManager の初期化時に別スレッドとして作成・実行された MulticastReceiverThread です。このスレッドは、dispose()メソッドが呼び出されるまで、内部のwhil…

Ehcacheの自動ピア・ディスカバリ周りのコードを読んでみる(その3)

MulticastKeepaliveHeartbeatSender$MulticastServerThread ハートビートを送るのは、CacheManager の初期化時に別スレッドとして作成・実行された MulticastServerThread です。run()の内部は2重のループ構造になっていて、外側のループは、ソケット周りの…

Ehcacheの自動ピア・ディスカバリ周りのコードを読んでみる(その2)

heartBeatReceiver と heartBeatSender の働きを掘り下げて行こうと思います。しかし、そうは問屋が卸してくれません。ハートビートの情報にリモート・ピア(ローカルのEhcache インスタンスに Remote インタフェースをかぶせて分散オブジェクトとして使うも…

Ehcacheの自動ピア・ディスカバリ周りのコードを読んでみる

CacheManagerPeerProvider Ehcacheでは、CacheManager の自動ピア・ディスカバリ機能は、CacheManagerPeerProvider インタフェースおよび CacheManagerPeerListener の内部実装に依存しています。しかし、現状では、MulticastRMICacheManagerPeerProvider 以…

SelfPopulatingCache

自前でキャッシュを行う場合、データを取得する際のお決まりのパターンってありますよね。キャッシュミスした場合の処理って、大体こんな感じじゃないでしょうか。 キャッシュからgetを試みるが、nullが返る。 データソースからデータを取得。 キャッシュにp…

CacheManagerEventListener の実装を作ってみる

今回は、CacheManagerEventListener のサンプルとして DefaultCacheRepressor を作成してみます。 DefaultCacheRepressor Ehcacheの上位のライブラリからEhcacheを使用する場合、Ehcache側でキャッシュを設定していなかった場合に、自動的にキャッシュを作成…

CacheManagerEventListener

CacheManagerEventListener は、CacheManager のイベントを監視するリスナーです。CacheManagerEventListener を使うと、CacheManager のイベントに対して任意の振る舞いを付加することができます。CacheManagerEventListener は、以下のようなメソッドを持…

CacheEventListenerの実装を作ってみる

ダメだ、眠れない、、、。ということで、今回は、CacheEventListenerのサンプルとして AmountOverflowAlarm を作成してみます。(こんな夜更けに、、、。) AmountOverflowAlarm AmountOverflowAlarm クラスとして、キャッシュへの put 後に、以前と現在の要…

CacheEventListener

CacheEventListener は、Cacheのイベントを監視するリスナーです。CacheEventListener を使うと、Cacheのイベントに対して任意の振る舞いを付加することができます。 CacheEventListener CacheEventListenerは、以下のようなメソッドを持つインタフェースで…

分散キャッシュ関連インタフェース設計

Ehcacheの分散キャッシュ周りの設定を見ると、実装は差し替えが可能な設計になっているっぽいですね。ということで、インタフェースレベルの設計を見てみました。 クラスタ Ehacache は、CacheManager 単位で分散キャッシュのクラスタを構成するように設計さ…

net.sf.ehcache.Cache#initialise メソッドって何してるの?

initialise()メソッドの主な処理 initialise()メソッドの主な処理は、以下のようになります。(ehcache-1.4.1) status が Status.STATUS_UNINITIALISED なら、IllegalStateException を発生。 maxElementsInMemory の値が 0 の場合、「1以上にしたほうがいい…

CacheManagerなしぢゃダメなのか?

前回キャッシュを使うためにCacheManagerを使用しましたが、キャッシュのファクトリとしての役割しかしてなさそうに見えます。そう考えると、CacheManager を使わない方法を考えたくなるのが人の常。というわけで、CacheManager なしのテストをしてみました…

12 Garbage Collection

Ehcacheマニュアルの12章では、ガーベージコレクションについて扱っています。特に巨大なヒープを用いる場合のGCの問題にフォーカスしています。このネタは、JDK1.5を対象としているらしい。 12.1 Detecting Garbage Collection Problems Full GC 中は、すべ…

とりあえず、キャッシュにput/getしてみる。

マニュアルには、こんな感じの例が出てます。 // シングルトンの CacheManager を取得する。 CacheManager singletonManager = CacheManager.create();// testCache という名前のキャッシュを作成して singletonManager に追加する。 singletonManager.addCa…