Ehcache - RMI缓存复制 - UI中未显示新添加的对象

时间:2012-07-03 14:13:53

标签: ehcache

我对ehcache相对较新,并试图在我的应用程序中实现缓存(示例应用程序)。我目前正在尝试使用RMI复制对某些数据对象进行缓存复制。我在同一台机器上运行了2个tomcat实例,并在两个实例上部署了相同的应用程序。我已经验证,在检索对象缓存时,它正在正常运行并且正在提高性能。

但是当我在第一个实例上创建一个新对象并尝试在第二个实例中检索时(有一个列出所有对象的页面),则不会显示新添加的对象。

我可以看到第二个实例的缓存中存在该对象。此外,它还在日志中确认,其中我看到以下消息

  

2012-07-03 17:06:41,471 [RMI TCP Connection(6)-192.168.100.105] DEBUG distribution.RMICachePeer - 用于缓存com.mycompany.session.Session的RMICachePeer:收到远程放置。元素是:[key = com.mycompany.session.Session#10,value = Item {version = 0,freshTimestamp = 5494027884412928,version = 1,hitCount = 0,CreationTime = 1341315402000,LastAccessTime = 1341315402000]

之前有没有人见过这种行为,他们能帮助我理解可能出现的问题吗?

下面提到的是我的ehcache.xml文件的内容

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="ehcache.xsd" >

<diskStore path="D:\\Cache1"/>

<cacheManagerPeerProviderFactory
    class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
    properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,         hostName=192.168.100.105, multicastGroupPort=4446, timeToLive=32"
/>

<cacheManagerPeerListenerFactory 
    class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
    properties="hostName=192.168.100.105, port=40001, socketTimeoutMillis=5000"
/>

<cache name="com.mycompany.session.Session"
      maxElementsInMemory="100"
      eternal="true"
      overflowToDisk="true">
      <cacheEventListenerFactory 
            class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
            properties="replicateAsynchronously=false
                       replicatePutsViaCopy=true,
                       replicateUpdatesViaCopy=true,
                       replicatePuts=true,
                       replicateUpdates=true,
                       replicateRemovals=true"/>
      <bootstrapCacheLoaderFactory 
        class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
</cache>

<defaultCache
       maxElementsInMemory="100"
       eternal="true"
       overflowToDisk="true"
/>

</ehcache>

tomcat的第二个实例也有类似的ehcache配置,但diskStore路径为“D:// Cache2”,对等侦听器端口为40002。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

看起来您没有在cacheManagerPeerProviderFactory中设置端口号。我们应该在server2设置上采用其他方式。

<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
    properties="hostName=localhost, port=50001,socketTimeoutMillis=2000"/>