0 0

Ehcache RMI集群三个节点复制的同步问题5

一个ehcache RMI集群里面有三个节点【A,B ,C】,他们依次启动,B节点不能同步A B连个节点所有数据,两端节点A,C可以同步其它两个节点所有信息。为什么?

A节点测试代码
   // PropertyConfigurator.configure("src/main/config/log4j.properties");
        CacheManager manager = new CacheManager("src/test/config/ehcache_cluster1.xml");

        // 取得Cache
        Cache cache = manager.getCache("UserCache");
        Element element = new Element("client1" + System.currentTimeMillis(), "client1");
        cache.put(element);
        while (true)
        {
            Thread.sleep(5000);
            System.out.println("\n");
            for (Object key : cache.getKeys())
            {
                System.out.println(key + ":" + cache.get(key));
            }


B节点测试代码
   CacheManager manager = new CacheManager("src/test/config/ehcache_cluster2.xml");
        Cache cache = manager.getCache("UserCache");
        Element element = new Element("client2" + System.currentTimeMillis(), "client2");
        cache.put(element);
        while (true)
        {
            Thread.sleep(5000);
            System.out.println("\n");
            for (Object key : cache.getKeys())
            {
                System.out.println(key + ":" + cache.get(key));
            }
        }


C节点测试代码
 CacheManager manager = new CacheManager("src/test/config/ehcache_cluster3.xml");
        Cache cache = manager.getCache("UserCache");

        Element element = new Element("client3" + System.currentTimeMillis(), "client3");
        cache.put(element);
        while (true)
        {
            Thread.sleep(5000);
            System.out.println("\n");
            for (Object key : cache.getKeys())
            {
                System.out.println(key + ":" + cache.get(key));
            }
        }



ehcache_cluster1.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=//localhost:40002/UserCache|rmiUrls=//localhost:40003/UserCache" />

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

	<cache name="UserCache" maxElementsInMemory="10000" >
		<cacheEventListenerFactory
			class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
			properties="replicateAsynchronously=false, replicatePuts=true,
                            replicatePutsViaCopy=true, replicateUpdates=true,
                            replicateUpdatesViaCopy=true, replicateRemovals=true,
                            asynchronousReplicationIntervalMillis=200" />
		<bootstrapCacheLoaderFactory
			class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
	</cache>
</ehcache>


ehcache_cluster2.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=//localhost:40001/UserCache|rmiUrls=//localhost:40003/UserCache" />

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

	<cache name="UserCache" maxElementsInMemory="10000">
		<cacheEventListenerFactory
			class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
			properties="replicateAsynchronously=false, replicatePuts=true,
                            replicatePutsViaCopy=true, replicateUpdates=true,
                            replicateUpdatesViaCopy=true, replicateRemovals=true,
                            asynchronousReplicationIntervalMillis=200" />
		<bootstrapCacheLoaderFactory
			class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
	</cache>
</ehcache>


ehcache_cluster3.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=//10.114.195.218:40001/UserCache|rmiUrls=//10.114.195.218:40002/UserCache" />

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

	<cache name="UserCache" maxElementsInMemory="10000">
		<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
			properties="replicateAsynchronously=false, replicatePuts=true,
                            replicatePutsViaCopy=true, replicateUpdates=true,
                            replicateUpdatesViaCopy=true, replicateRemovals=true,
                            asynchronousReplicationIntervalMillis=200" />
		<bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
	</cache>
</ehcache>


2013年4月25日 14:31

2个答案 按时间排序 按投票排序

0 0

换个端口就可以了,我把第二个换成了40005就可以了。

2013年5月03日 17:28
0 0

B节点不能同步A B连个节点所有数据,两端节点A,C可以同步其它两个节点所有信息。为什么?   这语句不通啊

1、有没有开防火墙 因为rmi不能走防火墙
2、测试路径中有没有空格?

2013年4月25日 18:52

相关推荐

Global site tag (gtag.js) - Google Analytics