Ehcacheの自動ピア・ディスカバリ周りのコードを読んでみる
CacheManagerPeerProvider
Ehcacheでは、CacheManager の自動ピア・ディスカバリ機能は、CacheManagerPeerProvider インタフェースおよび CacheManagerPeerListener の内部実装に依存しています。しかし、現状では、MulticastRMICacheManagerPeerProvider 以外の実装は存在しないようなので、そちらを読んでみることにします。
RMICacheManagerPeerProviderFactory
RMICacheManagerPeerProviderFactory は、CacheManagerPeerProvider を返すためのファクトリです。設定が peerDiscovery=automatic になっていると、MulticastRMICacheManagerPeerProvider を返します。
MulticastRMICacheManagerPeerProvider
CacheManagerの初期化では、CacheManagerPeerProvider が設定されている場合、その init() メソッドを呼び出します。MulticastRMICacheManagerPeerProvider の init() メソッドでは、以下の処理をしています。
heartBeatReceiver.init(); heartBeatSender.init();
heartBeatReceiver は MulticastKeepaliveHeartbeatReceiver クラスのインスタンスで、heartBeatSender は MulticastKeepaliveHeartbeatSender クラスのインスタンスです。
MulticastKeepaliveHeartbeatReceiver#init()
MulticastKeepaliveHeartbeatReceiver#init() メソッドでは、以下のような処理をしています。
MulticastKeepaliveHeartbeatSender#init()
MulticastKeepaliveHeartbeatSender#init() メソッドでは、以下のような処理をしています。
- ハートビートを定期的に投げるスレッド(MulticastServerThread)のインスタンスを生成。
- スレッドの開始。
今回のまとめ
ということで、MulticastRMICacheManagerPeerProvider の初期化部分までソースを追ってみました。