同じホストで2つのTomcatインスタンスを実行します。各インスタンスは、RMIレプリケーションを介していくつかのehcacheキャッシュと通信しようとする同じWebアプリケーションを実行します。ehcacheで自動検出構成を使用しているので、どのホストとどのキャッシュを複製するかを明示的に定義する必要はありません。ehcacheインスタンスは、お互いを見つけて通信することはできません。
DEBUG (RMIBootstrapCacheLoader.java:211) - cache peers: []
DEBUG (RMIBootstrapCacheLoader.java:133) - Empty list of cache peers for cache org.hibernate.cache.UpdateTimestampsCache. No cache peer to bootstrap from.
同じことを試しても、今回は各Tomcatインスタンスを別々のホスト(ボックス)で実行すると、すべてが魅力のように機能します。
インスタンスが同じホスト上にある場合、何か問題が発生していますか、それともマルチキャストによる自動検出ができませんか?
私の構成では、 RMI分散キャッシングのドキュメントに示されているデフォルトを使用しています。
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
multicastGroupPort=4446, timeToLive=32"/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="port=40001, socketTimeoutMillis=2000"/>
そして、複製したい各キャッシュ領域内には、次のものがあります。
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="asynchronousReplicationIntervalMillis=500 " />
<bootstrapCacheLoaderFactory
class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
ありがとう