简体   繁体   中英

EhCache rmi replication issue in WebLogic cluster

I am facing the ehcache replication issue while deploying the application into WebLogic 10.3.6. Application is not starting and throwing the below exception:

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 configuration is as follows:

<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>

Appreciate any help.

I am able to make it working by changing my cache discovery strategy to automatic and multicast.

See the working configuration below:

<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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM