2014-10-19 4 views
0

Я столкнулся с проблемой репликации ehcache при развертывании приложения в WebLogic 10.3.6. Применение не запускается и бросали ниже исключение:Проблема репликации EhCache rmi в кластере WebLogic

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehCacheManager' defined in class path resource [xxxxx.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Problem starting listener for RMICachePeer //xxxx:xxxx/myCache. Initial cause was RemoteException occurred in server thread; nested exception is: 
    java.rmi.AccessException: Registry.Registry.rebind disallowed; origin /x.x.x.x is non-local host 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) 
    ... 

Caused by: net.sf.ehcache.CacheException: Problem starting listener for RMICachePeer //xxxx:xxxx/myCache. Initial cause was RemoteException occurred in server thread; nested exception is: 
    java.rmi.AccessException: Registry.Registry.rebind disallowed; origin /x.x.x.x is non-local host 
    at net.sf.ehcache.distribution.RMICacheManagerPeerListener.notifyCacheAdded(RMICacheManagerPeerListener.java:538) 
    at net.sf.ehcache.event.CacheManagerEventListenerRegistry.notifyCacheAdded(CacheManagerEventListenerRegistry.java:159) 
    at net.sf.ehcache.CacheManager.addCacheNoCheck(CacheManager.java:1118) 
    at net.sf.ehcache.CacheManager.addConfiguredCaches(CacheManager.java:670) 
    at net.sf.ehcache.CacheManager.init(CacheManager.java:372) 
    at net.sf.ehcache.CacheManager.<init>(CacheManager.java:294) 
    at org.springframework.cache.ehcache.EhCacheManagerFactoryBean.afterPropertiesSet(EhCacheManagerFactoryBean.java:104) 
    ... 

конфигурации EHCache выглядит следующим образом:

<diskStore path="java.io.tmpdir/myCache" /> 

<cacheManagerPeerProviderFactory 
    class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
    properties="peerDiscovery=manual,rmiUrls=//x.x.x.x:xxxx/myCache" />        

<cacheManagerPeerListenerFactory 
    class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
    properties="hostName=x.x.x.x,port=xxxx,socketTimeoutMillis=300000" /> 

<cache 
    name="myCache" 
    maxElementsInMemory="1000" 
    eternal="false" 
    overflowToDisk="false" 
    diskPersistent="false" 
    timeToIdleSeconds="0" 
    timeToLiveSeconds="1000" 
    memoryStoreEvictionPolicy="LRU"> 
    <cacheEventListenerFactory 
     class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" 
     properties="replicatePuts=true,replicateUpdates=true,replicateRemovals=true,replicateUpdatesViaCopy=true,replicateAsynchronously=true" /> 
    <bootstrapCacheLoaderFactory 
     class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" /> 
</cache> 

Цените любую помощь.

ответ

0

Я могу заставить его работать, изменив стратегию обнаружения кеша на автоматическую и многоадресную рассылку.

См рабочей конфигурации ниже:

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

<cacheManagerPeerListenerFactory 
    class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
    properties="port=xxxx,socketTimeoutMillis=300000" /> 

<cache 
    name="myCache" 
    maxElementsInMemory="1000" 
    eternal="false" 
    overflowToDisk="false" 
    diskPersistent="false" 
    timeToIdleSeconds="0" 
    timeToLiveSeconds="1000" 
    memoryStoreEvictionPolicy="LRU"> 
    <cacheEventListenerFactory 
     class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/> 
    <bootstrapCacheLoaderFactory 
     class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/> 
</cache> 
Смежные вопросы