我在网上找到的例子!
服务器一的代码
package com.fufu.ehcache;import java.net.URL;import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;public class TestEhCache {
public static void main(String[] args)throws Exception {
URL url = UsingCacheCluster.class.getClassLoader().getResource(
"ehcache_cluster.xml");
CacheManager manager = new CacheManager(url);
//取得Cache
Cache cache = manager.getCache("UserCache");
int i=0;
while(true){
String key="key"+i;
Object value="wanglin"+i;
Element element = new Element(key,value);
cache.put(element);
i++;
Thread.sleep(2000);
}
} }
配置文件
ehcache_cluster.xml<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd">
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
rmiUrls=//134.128.58.91:40000/UserCache" />
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=134.128.58.79,port=40000,socketTimeoutMillis=120000" />
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</defaultCache>
<cache name="UserCache" maxElementsInMemory="1000" eternal="false"
timeToIdleSeconds="100000" timeToLiveSeconds="100000"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="UserCache2" maxElementsInMemory="1000" eternal="false"
timeToIdleSeconds="100000" timeToLiveSeconds="100000"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
</ehcache>
服务器二的代码:
package com.fufu.ehcache;import java.net.URL;
import java.util.List;import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;public class UsingCacheCluster { public static void main(String[] args) throws InterruptedException {
URL url = UsingCacheCluster.class.getClassLoader().getResource(
"ehcache_cluster.xml");
CacheManager manager = new CacheManager(url);
//取得Cache
Cache cache = manager.getCache("UserCache"); while(true){
List keyList =cache.getKeys();
for(int i=0;i<keyList.size();i++){
Element e = cache.get(keyList.get(i));
System.out.println(e.getValue());
}
System.out.println("***************");
Thread.sleep(2000);
}
}
}服务器二的配置<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd">
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
rmiUrls=//134.128.58.79:40000/UserCache,timeToLive=255" propertySeparator=","/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=134.128.58.91,port=40000,socketTimeoutMillis=120000" />
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</defaultCache>
<cache name="UserCache" maxElementsInMemory="1000" eternal="false"
timeToIdleSeconds="100000" timeToLiveSeconds="100000"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
</ehcache> 这样写的话测试后是可以同步过来的!但是当同步java POjO时问题来了
另一个同步代码
package com.fufu.ehcache;import java.net.URL;import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;public class UsingCacheCluster { public static void main(String[] args)throws Exception {
URL url = UsingCacheCluster.class.getClassLoader().getResource(
"ehcache_cluster.xml");
System.out.println(url);
CacheManager manager = new CacheManager(url);
//取得Cache
Cache cache = manager.getCache("UserCache");
int i=0;
while(true){
String key="key"+i;
People p = new People(i);
Element element = new Element(key,p);
cache.put(element);
i++;
Thread.sleep(2000);
}
}
}
同步对象时就出现错误
2009-9-24 15:54:43 net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator flushReplicationQueue
警告: Unable to send message to remote peer. Message was: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: com.fufu.ehcache.People (no security manager: RMI class loader disabled)
服务器一的代码
package com.fufu.ehcache;import java.net.URL;import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;public class TestEhCache {
public static void main(String[] args)throws Exception {
URL url = UsingCacheCluster.class.getClassLoader().getResource(
"ehcache_cluster.xml");
CacheManager manager = new CacheManager(url);
//取得Cache
Cache cache = manager.getCache("UserCache");
int i=0;
while(true){
String key="key"+i;
Object value="wanglin"+i;
Element element = new Element(key,value);
cache.put(element);
i++;
Thread.sleep(2000);
}
} }
配置文件
ehcache_cluster.xml<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd">
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
rmiUrls=//134.128.58.91:40000/UserCache" />
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=134.128.58.79,port=40000,socketTimeoutMillis=120000" />
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</defaultCache>
<cache name="UserCache" maxElementsInMemory="1000" eternal="false"
timeToIdleSeconds="100000" timeToLiveSeconds="100000"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="UserCache2" maxElementsInMemory="1000" eternal="false"
timeToIdleSeconds="100000" timeToLiveSeconds="100000"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
</ehcache>
服务器二的代码:
package com.fufu.ehcache;import java.net.URL;
import java.util.List;import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;public class UsingCacheCluster { public static void main(String[] args) throws InterruptedException {
URL url = UsingCacheCluster.class.getClassLoader().getResource(
"ehcache_cluster.xml");
CacheManager manager = new CacheManager(url);
//取得Cache
Cache cache = manager.getCache("UserCache"); while(true){
List keyList =cache.getKeys();
for(int i=0;i<keyList.size();i++){
Element e = cache.get(keyList.get(i));
System.out.println(e.getValue());
}
System.out.println("***************");
Thread.sleep(2000);
}
}
}服务器二的配置<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd">
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
rmiUrls=//134.128.58.79:40000/UserCache,timeToLive=255" propertySeparator=","/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=134.128.58.91,port=40000,socketTimeoutMillis=120000" />
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</defaultCache>
<cache name="UserCache" maxElementsInMemory="1000" eternal="false"
timeToIdleSeconds="100000" timeToLiveSeconds="100000"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
</ehcache> 这样写的话测试后是可以同步过来的!但是当同步java POjO时问题来了
另一个同步代码
package com.fufu.ehcache;import java.net.URL;import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;public class UsingCacheCluster { public static void main(String[] args)throws Exception {
URL url = UsingCacheCluster.class.getClassLoader().getResource(
"ehcache_cluster.xml");
System.out.println(url);
CacheManager manager = new CacheManager(url);
//取得Cache
Cache cache = manager.getCache("UserCache");
int i=0;
while(true){
String key="key"+i;
People p = new People(i);
Element element = new Element(key,p);
cache.put(element);
i++;
Thread.sleep(2000);
}
}
}
同步对象时就出现错误
2009-9-24 15:54:43 net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator flushReplicationQueue
警告: Unable to send message to remote peer. Message was: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: com.fufu.ehcache.People (no security manager: RMI class loader disabled)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货