Репликация Ehcache RMI не работает на Linux с Tomcat, но отлично работает на Windows? - PullRequest
1 голос
/ 09 февраля 2012

мы установили два экземпляра сервера, который является веб-приложением, скажем, SampleWebApp, на двух системах в linux.Мы настроили ehcache для кэширования локальных данных, а также репликацию RMI по умолчанию для репликации изменений, сделанных на сервере Server1-Server2.Репликация отлично работает в среде Windows, но не работает в среде Linux.Даже если ошибка не распечатывается, происходит сбой в автоматическом режиме.

Ниже приведены конфигурации, выполненные в файле ehcache.xml -

    <cacheManagerPeerProviderFactory              class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
    properties="peerDiscovery=manual,
    rmiUrls=//<ip>:50000/sampleReplicatedCache"
    propertySeparator="," />
    <cacheManagerPeerListenerFactory             class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"   properties="port=40000"/>
    <cache name="cmServerReplicatedCache" maxElementsInMemory="100" eternal="true"
    memoryStoreEvictionPolicy="LRU" >
    <cacheEventListenerFactory       class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
    properties="replicateAsynchronously=true, replicatePuts=true,
    replicatePutsViaCopy=true, replicateUpdates=true, replicateUpdatesViaCopy=true,           replicateRemovals=false,   asynchronousReplicationIntervalMillis=5000"/>
    <bootstrapCacheLoaderFactory      class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
    </cache>

Не установлен брандмауэр, который может блокировать репликацию, поэтому брандмауэр непричина, почему это не удается.Также проверил, открыты ли порты.Выделенный порт 50000 открыт, и Ehcache прослушивает этот порт.Проблема в том, что если в кеше происходит обновление, это изменение не реплицируется.

Будем благодарны за любые предложения или разъяснения.

Спасибо, Чудо!

1 Ответ

0 голосов
/ 23 октября 2013

Эта проблема решена. Забыл опубликовать ответ. Проблема заключалась в том, что я использовал токены в ehcache.xml, но средство разрешения выражений Spring (замена токенов с помощью $ {}) не поддерживается в файле ehcache.xml, поскольку файл не попадает в контекст приложения Spring. Я заменил токены фактическими значениями, и тогда это сработало

...