我正在尝试设置ehcache复制,如下所示:
http://ehcache.sourceforge.net/EhcacheUserGuide.html#id.s22.2
这是在Windows机器上,但最终将在Solaris上运行. @H_301_3@说明如下设置提供商:
组播IP地址和端口是否任意(我知道地址必须在特定范围内生效,但是它们是否必须是特定的数字)?
是否需要我们的系统管理员(我在办公室网络中)以某种方式设置? @H_301_3@我想在本地测试,所以我运行两个单独的tomcat实例与上述配置.
我需要改变每一个?我知道听众听不到同一个端口 – 但是提供者呢?
还有听众端口也是任意的吗? @H_301_3@我已经尝试像上面那样设置它,但在我的测试中,缓存似乎没有被复制 – 在一个tomcat的缓存中添加的值不存在于另一个缓存中.
有什么可以做的来调试这种情况(除了数据包嗅探)吗? @H_301_3@提前感谢任何帮助,一直撕裂我的头发在这一个!
这是在Windows机器上,但最终将在Solaris上运行. @H_301_3@说明如下设置提供商:
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=automatic,multicastGroupAddress=230.0.0.1,multicastGroupPort=4446,timeToLive=32"/>@H_301_3@和一个这样的听众:
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="hostName=localhost,port=40001,socketTimeoutMillis=2000"/>@H_301_3@我的问题是:
组播IP地址和端口是否任意(我知道地址必须在特定范围内生效,但是它们是否必须是特定的数字)?
是否需要我们的系统管理员(我在办公室网络中)以某种方式设置? @H_301_3@我想在本地测试,所以我运行两个单独的tomcat实例与上述配置.
我需要改变每一个?我知道听众听不到同一个端口 – 但是提供者呢?
还有听众端口也是任意的吗? @H_301_3@我已经尝试像上面那样设置它,但在我的测试中,缓存似乎没有被复制 – 在一个tomcat的缓存中添加的值不存在于另一个缓存中.
有什么可以做的来调试这种情况(除了数据包嗅探)吗? @H_301_3@提前感谢任何帮助,一直撕裂我的头发在这一个!
解决方法
@H_301_3@I want to test it locally so am@H_301_3@由于我刚刚提交了关于cherouvims related question的答案,我只想强调这一点,他们实际上提供了一个例子,至少做一些类似的事情(每个主机的多个节点,虽然只有一个实例):请参见RMI Distributed Caching文档. @H_301_3@更改每个cacheManagerPeerListenerFactory的TCP端口确实很重要,但是多播设置可以(我认为它们必须)保持不变:您可以在ehcache.xml’s中看到上述完整示例中的操作:端口号增加一个每个节点从40001到40006,而组播设置保持不变. @H_301_3@如果您遵守这一点,您的问题可能只是与在Windows上运行的Tomcat相关 – 请参阅RMI Distributed Caching中的常见问题部分中的相关段落:
running two separate tomcat instances
with the above config.
@H_301_3@There is a bug in Tomcat and/or the JDK where any RMI listener will fail to start on Tomcat if the installation path has spaces in it. […] As the default on Windows is to install Tomcat in “Program Files”,this issue will occur by default.