2013-06-25 34 views
0

我想为两台不同的服务器设置Ehcache的手动复制。以下是我的配置:EhCache - 手动复制不起作用

<cache name="codeTaskCache" maxElementsInMemory="1000" eternal="false" 
timeToIdleSeconds="0" timeToLiveSeconds="0" overflowToDisk="false" /> 


<cacheManagerPeerProviderFactory class= 
         "net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
         properties="peerDiscovery=manual, 
         rmiUrls=//server1:40001/codeTaskCache |  //server2:40001/codeTaskCache" 
         propertySeparator="," />` 

两个tomcat服务器上运行在两个不同unix机箱上的配置相同。

复制从服务器1→服务器2正常工作,但不是从服务器2→服务器1,这很奇怪。

在文档中,他们有一条语句'rmiUrls是正在配置的服务器的缓存对端列表。不要在列表中包含正在配置的服务器。'

但是,如果它以一种方式工作,那么为什么不是另一种方式呢?有人可以对此有所了解吗?提前致谢。

+0

我刚刚被困扰与非常类似的问题,也许我的文章可以帮助你: http://stackoverflow.com/questions/17314121/ehcache-not-replicating-solution/ – OddBeck

+0

感谢Oddbeck,但我我没有使用cacheManagerPeerListenerFactory。 – Elf

+0

但是当然,您必须让服务器知道它应该在本地监听来自其他服务器的传入连接的端口 - 此时如何解决此问题? – OddBeck

回答

0

RMI网址不应该指向自己,只是其他ehcache实例 - 至少这是对我有用。

还要确保主机名可以从两台服务器解析出来,并且在最后的绝望尝试中,您甚至可以尝试在侦听器部分XML的侦听语句中使用“hostname = name_of_server_dot_domain_dot_com”。