Я пытаюсь настроить параметры репликации ehcache.У меня есть приложение с ehcache, работающее в кластерной среде с использованием двух серверов, и я пытаюсь установить репликацию между двумя экземплярами.
Ниже приведен мой конфиг
@ Bean(destroyMethod = "shutdown") public net.sf.ehcache.CacheManager ehCacheManager () {CacheEventListenerFactoryConfiguration eventListenerFactoryConfig = new CacheEventListenerFactoryConfiguration ();eventListenerFactoryConfig.setClass ( "net.sf.ehcache.distribution.RMICacheReplicatorFactory");eventListenerFactoryConfig.setProperties ("replicateAsynchronously = true, replicatePuts = true, replicateUpdates = true, replicateUpdatesViaCopy = false, replicateRemovals = true");eventListenerFactoryConfig.setPropertySeparator (",");
BootstrapCacheLoaderFactoryConfiguration bootstrapCacheLoaderFactoryConfig =
new BootstrapCacheLoaderFactoryConfiguration();
bootstrapCacheLoaderFactoryConfig.className("net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory");
bootstrapCacheLoaderFactoryConfig.setProperties("bootstrapAsynchronously=true");
bootstrapCacheLoaderFactoryConfig.propertySeparator(",");
CacheConfiguration userEntityCacheConfiguration = new CacheConfiguration();
userEntityCacheConfiguration.setName("userEntityCache");
userEntityCacheConfiguration.setMaxEntriesLocalHeap(5);
userEntityCacheConfiguration.setTimeToLiveSeconds(3600);
userEntityCacheConfiguration.copyOnRead(true);
userEntityCacheConfiguration.copyOnWrite(true);
userEntityCacheConfiguration.addCacheEventListenerFactory(eventListenerFactoryConfig);
userEntityCacheConfiguration.addBootstrapCacheLoaderFactory(bootstrapCacheLoaderFactoryConfig);
net.sf.ehcache.config.Configuration config = new net.sf.ehcache.config.Configuration();
config.addCache(userEntityCacheConfiguration);
FactoryConfiguration<CacheLoaderFactoryConfiguration> peerListenerFactoryConfig = new FactoryConfiguration<>();
peerListenerFactoryConfig
.setProperties("hostName=172.19.16.114,port=40001”);
peerListenerFactoryConfig.setPropertySeparator(",");
peerListenerFactoryConfig.className("net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory");
config.addCacheManagerPeerListenerFactory(peerListenerFactoryConfig);
FactoryConfiguration<CacheLoaderFactoryConfiguration> peerProviderFactoryConfig = new FactoryConfiguration<>();
peerProviderFactoryConfig
.setProperties("peerDiscovery=manual,rmiUrls=“//172.19.16.242:40001/userEntityCache");
peerProviderFactoryConfig.setPropertySeparator(",");
peerProviderFactoryConfig.className("net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory");
config.addCacheManagerPeerProviderFactory(peerProviderFactoryConfig);
config.setMonitoring("autodetect");
config.setDynamicConfig(true);
this.newCacheManager = new net.sf.ehcache.CacheManager(config);
return newCacheManager;
}
Это для первого экземпляра.
Для второго экземпляра я изменил имя хоста peerListenerFactoryConfig на 172.19.16.242 и rmiUrls на //172.19.16.114:40001/userEntityCache
Функции кэширования работают нормальноно репликация не работает
Я получаю следующее исключение
[Тема репликации] 2018-10-26 16:48:12 WARN RMIAsynchronousCacheReplicator - Невозможно отправить сообщение удаленному узлу.Сообщение было: Соединение отказано в хосте: 127.0.0.1;Вложенное исключение: java.net.ConnectException: Соединение отклонено (Соединение отклонено) java.rmi.ConnectException: Соединение отказано в хосте: 127.0.0.1;
Не уверен, почему он пытается попасть на локальный хост.