ehcache分布式缓存问题!求高手赐教~。。。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

我嘞个去 2012-08-23 06:53:34
现在要做一个ehcache的分布式缓存,两台物理机server1 server2 我在server1里put一个对象 在server2中取不到!
server1 的ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<diskStore path="C:/ehcache/session"/>
<!--调用ehcache2的RMI-->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,rmiUrls=//192.168.1.2:40002/userIdcache "/>

<!--RMI监听40001端口-->
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=192.168.1.1,port=40001,socketTimeoutMillis=2000"/>

<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU">
</defaultCache>

<cache name="userIdcache "
maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="1800" timeToLiveSeconds="0"
overflowToDisk="false" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" diskPersistent="true"
diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU">


<!--监听配置-->

<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />
</cache>

</ehcache>

server2的ehcache.xml


<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<diskStore path="C:/ehcache/session"/>
<!--调用ehcache1的RMI-->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,rmiUrls=//192.168.1.1:40001/userIdcache "/>

<!--RMI监听40002端口-->
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=192.168.1.2,port=40002,socketTimeoutMillis=2000"/>

<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU">
</defaultCache>

<cache name="userIdcache "
maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="1800" timeToLiveSeconds="0"
overflowToDisk="false" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" diskPersistent="true"
diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU">


<!--监听配置-->

<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />
</cache>

</ehcache>



下边是java代码



public class CacheFactory {
private CacheManager manager;
private static CacheFactory factory= null;
private CacheFactory(){
manager = new CacheManager("src/ehcache.xml");
}
public static CacheFactory getInstance(){
if(factory==null){
factory = new CacheFactory();
}
return factory;
}
public Cache getCache(){
return manager.getCache("userIdcache");
}
public static void main(String[] args) {
System.out.println(CacheFactory.getInstance().getCache());
}
}




server1的java代码

public class TestCache {
public static void main(String[] args) {
Cache cache = CacheFactory.getInstance().getCache();
//这里给cache里边放一个key1
Element element = new Element("key1", "value1");
cache.put(element);
System.out.println("server1: put cache :"+element.getValue());
}
}



server2的java代码



public class TestCache {
public static void main(String[] args) {
Cache cache = CacheFactory.getInstance().getCache();
//这里Element为空 获取不到key1
Element element = cache.get("key1");
System.out.println("server2:"+element.getValue());

}
}










就是上边获取不到!!!!!!求大神赐教~~~~~~~~
...全文
214 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
scbb 2012-08-26
  • 打赏
  • 举报
回复
XML配置文件里很多值最后带了空格,这个是粘贴在帖子里出现的吗?

请检查自己的文件
例:

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,rmiUrls=//192.168.1.1:40001/userIdcache空格"/>
brightyq 2012-08-25
  • 打赏
  • 举报
回复
配置上差不多,看不出来明显错误。
看一下项目有无报错,也可以选用不同版本试试。
也可以试试memcache,对缓存集群支持的比ehcache要好。
MiceRice 2012-08-23
  • 打赏
  • 举报
回复
设置下超时时间,看看后台有没有异常信息:
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="socketTimeoutMillis=2000,peerDiscovery=manual,rmiUrls=//192.168.1.2:40002/userIdcache"/>


另外有个小问题,我看你配置cache名称时,后面都习惯性留个空格,比如:
name="userIdcache "
这个不太好,删掉所有这种空格吧,还有rmiUrls后面的,有时候就是空格坏事的。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧