Ich führe 2 Tomcat-Instanzen auf dem gleichen Host. Jede Instanz führt dieselbe Webanwendung aus, die versucht, einige E-Cache-Caches über die RMI-Replikation zu übertragen. Ich verwende die Autodiscovery-Konfiguration in ehcache, so dass ich nicht explizit definieren muss, welche Hosts und welche Caches ich replizieren möchte. Die ehcache Instanzen nicht gelingen, sich zu finden und kommunizieren:ehcache automatische Erkennung (über Multicast) zwischen 2 Instanzen auf dem gleichen Host
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.
Wenn ich das Gleiche versuchen, aber diesmal jede tomcat Instanz auf einem separaten Host (box) läuft dann funktioniert alles wie am Schnürchen.
Mache ich etwas falsch, oder ist Autodiscovery über Multicast nicht möglich, wenn sich die Instanzen auf demselben Host befinden?
Meine Konfiguration verwendet die präsentierten Ausfälle im RMI Distributed Caching documentation:
<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"/>
Und in jedem Cache-Bereich I replizierenden ich habe:
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="asynchronousReplicationIntervalMillis=500 " />
<bootstrapCacheLoaderFactory
class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
dank
Das war es. Es gab eine Port-Kollision, aber keine WARN oder ERROR in den Logs (und ich habe alles auf Stufe ALL gesetzt). Danke vielmals!!! – cherouvim