こんにちは、他の ehcache レプリケーションの問題に非常に似た質問を投稿して申し訳ありませんが、私は一日中この問題に頭を悩ませており、解決策のない多くのスタックオーバーフローの投稿を読みました。
できる限り簡単な ehcache レプリケーション テストをセットアップしようとしましたが、うまくいきません。EhcacheTest は、1 つの要素を「tprc」という名前のキャッシュに書き込み、次にキャッシュを読み取り、見つかったものを出力します。EhcacheTest2 はほぼ同じですが、別の要素を書き込みます。私は、EhcacheTest2 が、EhcacheTest と EhcacheTest2 によって書き込まれた値の両方を表示することを期待しています。
EhcacheTest は次のとおりです。
public class EhcacheTest {
public static void main(String[] args) {
CacheManager manager = CacheManager.newInstance("bin/ehcache.xml");
Cache cache = manager.getCache("tprc");
Element element = new Element("name1", "jim");
cache.put(element);
for (int i = 1; i <= 2; i++) {
String key = "name" + Integer.toString(i);
Element got = cache.get(key);
if (got != null) {
System.out.println("1 " + got.getObjectKey() + "=" + got.getObjectValue());
}
}
}
}
EhcacheTest2 は次のとおりです。
public class EhcacheTest2 {
public static void main(String[] args) {
CacheManager manager = CacheManager.newInstance("bin/ehcache.xml");
Cache cache = manager.getCache("tprc");
Element element = new Element("name2", "erik");
cache.put(element);
for (int i = 1; i <= 2; i++) {
String key = "name" + Integer.toString(i);
Element got = cache.get(key);
if (got != null) {
System.out.println("2 " + got.getObjectKey() + "=" + got.getObjectValue());
}
}
}
}
ehcache.xml ファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true" monitoring="autodetect"
dynamicConfig="true">
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic,
multicastGroupAddress=230.0.0.1,
multicastGroupPort=4446"/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=192.168.1.115, port=40001, socketTimeoutMillis=5000"/>
<cache name="tprc"
maxEntriesLocalHeap="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=false, replicatePuts=true,
replicatePutsViaCopy=true, replicateUpdates=true,
replicateUpdatesViaCopy=true, replicateRemovals=true"/>
</cache>
</ehcache>
EhcacheTest を実行し、実行したままにしてから、EhcacheTest2 を実行します。EhcacheTest の出力は次のとおりです。
1 name1=jim
EhcacheTest2 の出力は次のとおりです。
2 name2=erik
EhcacheTest2 の出力を表示したい
2 name1=jim
2 name2=erik
誰が何が悪いのか知っていますか?