2015-01-14 2 views
1

Я тестирую распределенное кэширование плагина Grails Ehcache, пытаясь запустить две разные версии одного и того же приложения на разных портах.Ошибка с ehcacheMulticastGroupAddress Настройка распределенного кэша Grails

В BuildConfig у меня есть:

plugins { 
    // plugins for the build system only 
    build ":tomcat:7.0.55" 

    // plugins for the compile step 
    compile ":cache-ehcache:1.0.4" 

    // plugins needed at runtime but not for compilation 
    runtime ":hibernate4:4.3.6.1" 
    runtime ":database-migration:1.4.0" 
    runtime ":jquery:1.11.1" 

} 

Приложение будет работать правильно и кэшировать объект домена.

Когда я добавляю следующую конфигурацию либо Config.groovy или CacheConfig.groovy (и включить его с помощью grails.config.locations) я получаю следующее сообщение об ошибке:

Message: Could not create CacheManagerPeerProvider. Initial cause was ${ehcacheMulticastGroupAddress} 
    Line | Method 
->> 63 | createCachePeerProvider in net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 136 | createCachePeerProviders in net.sf.ehcache.config.ConfigurationHelper 
| 795 | configure . . . . . . . in net.sf.ehcache.CacheManager 
| 471 | doInit     in  '' 
| 395 | init . . . . . . . . . . in  '' 
| 177 | rebuild     in grails.plugin.cache.ehcache.GrailsEhCacheManagerFactoryBean$ReloadableCacheManager 
|  63 | reload . . . . . . . . . in grails.plugin.cache.ehcache.EhcacheConfigLoader 
|  42 | reload     in grails.plugin.cache.ConfigLoader 
| 204 | reloadCaches . . . . . . in CacheGrailsPlugin 
| 161 | doCall     in CacheGrailsPlugin$_closure3 
| 334 | innerRun . . . . . . . . in java.util.concurrent.FutureTask$Sync 
| 166 | run      in java.util.concurrent.FutureTask 
| 1145 | runWorker . . . . . . . in java.util.concurrent.ThreadPoolExecutor 
| 615 | run      in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 722 | run . . . . . . . . . . in java.lang.Thread 

Caused by UnknownHostException: ${ehcacheMulticastGroupAddress} 
->> 894 | lookupAllHostAddr  in java.net.InetAddress$1 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 1286 | getAddressesFromNameService in java.net.InetAddress 
| 1239 | getAllByName0 . . . . . in  '' 
| 1155 | getAllByName    in  '' 
| 1091 | getAllByName . . . . . . in  '' 
| 1041 | getByName    in  '' 
| 113 | createAutomaticallyConfiguredCachePeerProvider in net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory 
|  61 | createCachePeerProvider in  '' 
| 136 | createCachePeerProviders in net.sf.ehcache.config.ConfigurationHelper 
| 795 | configure    in net.sf.ehcache.CacheManager 
| 471 | doInit . . . . . . . . . in  '' 
| 395 | init      in  '' 
| 177 | rebuild . . . . . . . . in grails.plugin.cache.ehcache.GrailsEhCacheManagerFactoryBean$ReloadableCacheManager 
|  63 | reload     in grails.plugin.cache.ehcache.EhcacheConfigLoader 
|  42 | reload . . . . . . . . . in grails.plugin.cache.ConfigLoader 
| 204 | reloadCaches    in CacheGrailsPlugin 
| 161 | doCall . . . . . . . . . in CacheGrailsPlugin$_closure3 
| 334 | innerRun     in java.util.concurrent.FutureTask$Sync 
| 166 | run . . . . . . . . . . in java.util.concurrent.FutureTask 
| 1145 | runWorker    in java.util.concurrent.ThreadPoolExecutor 
| 615 | run . . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 722 | run      in java.lang.Thread 
+0

Таким образом, приложение работает нормально, если я упакую его как войну и разворачиваю в локальную версию Tomcat. –

ответ

0

Выглядит как конфигурация Ehcache имеет неразрешенная переменная: ${ehcacheMulticastGroupAddress}

+0

Да. И похоже, что переменная не решена из-за проблем с разрешением в java.net.InetAddress. Но почему? –

+0

Нет, это наоборот. Переменная должна быть сначала решена с именем хоста, чтобы можно было открыть соединение с ним. Я не очень хорошо знаю Grails, поэтому не уверен, что у вас есть ehcache.xml или нет, но посмотрите там или в файлах конфигурации grails, чтобы заменить значение. –

+0

Кажется, что переменные существуют, когда приложение развертывается в Tomcat, а не при запуске grails run-app, который имеет смысл. Просто делает тестирование на localhost немного сложнее, но выполнимо. –

Смежные вопросы