我不確定你在做什麼錯,但是是的,這絕對有可能。 這應該工作:
public static void main(String[] args) {
Cache cacheA = startSomeNode("A").getCache("someCache");
Cache cacheB = startSomeNode("B").getCache("someCache");
cacheA.put("key", "Hello World!");
Object val = cacheB.get("key");
System.out.println("Retrieved value is: " +val);
}
static DefaultCacheManager startSomeNode(String nodeName) {
GlobalConfiguration glb = new GlobalConfigurationBuilder()
.transport()
.nodeName(nodeName)
.defaultTransport()
.globalJmxStatistics()
.jmxDomain(nodeName)
.build();
ConfigurationBuilder builder = new ConfigurationBuilder();
builder
.clustering()
.cacheMode(CacheMode.REPL_SYNC);
Configuration cacheConfiguration = builder.build();
return new DefaultCacheManager(glb, cacheConfiguration);
}
確保將其綁定到環回接口,以便在同一臺機器上運行,或者在相同的工藝上面的例子中,當你的兩個進程實際上可以達到互相連:
-Djgroups.bind_addr=127.0.0.1
如果你在Linux上運行,請確保您還可以避免IPv6的,因爲它是否則該平臺上的默認:
-Djava.net.preferIPv4Stack=true
的Infinispan JGroups也支持IPv6,但遺憾的是,人們沒有在其主機上正確配置IPv6,這似乎很常見,所以我建議從簡單的IPv4設置開始。
請注意,我過分簡化了代碼;當你與打做你可能會想,以確保
- 你不要在同一個JVM啓動兩個實例的CacheManager
- 你要確保你停止CacheManager的情況下
謝謝你真是太棒了!它有幫助。 – user3119626