В моей Sping основе проекта (весна версия 4.1.5.FINAL), я использую EHCache-ядро версии 2.6.10, EHCache-jgroupsreplication Versione 1,7 и JGroups 3.1.0.FINALEhcache JGroups
Этот моя конфигурация XML EHCache:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" name="webCache" >
<diskStore path="java.io.tmpdir/webCache"/>
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" properties="udp.xml"/>
<cache name="it.test.cache.CustomCache"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="600"
timeToLiveSeconds="6000"
overflowToDisk="true">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory" properties="replicateAsynchronously=true,replicatePuts=true,replicateUpdates=true,replicateUpdatesViaCopy=false,replicateRemovals=true" />
</cache>
</ehcache>
Это моя конфигурация upd.xml:
<config xmlns="urn:org:jgroups"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/jgroups.xsd">
<UDP
mcast_port="${jgroups.udp.mcast_port:45588}"
tos="8"
ucast_recv_buf_size="200K"
ucast_send_buf_size="200K"
mcast_recv_buf_size="200K"
mcast_send_buf_size="200K"
max_bundle_size="64K"
max_bundle_timeout="30"
ip_ttl="${jgroups.udp.ip_ttl:2}"
enable_diagnostics="true"
thread_naming_pattern="cl"
timer_type="new"
timer.min_threads="4"
timer.max_threads="10"
timer.keep_alive_time="3000"
timer.queue_max_size="500"
thread_pool.enabled="true"
thread_pool.min_threads="2"
thread_pool.max_threads="8"
thread_pool.keep_alive_time="5000"
thread_pool.queue_enabled="true"
thread_pool.queue_max_size="10000"
thread_pool.rejection_policy="discard"
oob_thread_pool.enabled="true"
oob_thread_pool.min_threads="1"
oob_thread_pool.max_threads="8"
oob_thread_pool.keep_alive_time="5000"
oob_thread_pool.queue_enabled="false"
oob_thread_pool.queue_max_size="100"
oob_thread_pool.rejection_policy="Run"/>
<PING />
<MERGE3 max_interval="30000"
min_interval="10000"/>
<FD_SOCK/>
<FD_ALL/>
<VERIFY_SUSPECT timeout="1500" />
<BARRIER />
<pbcast.NAKACK use_mcast_xmit="true"
retransmit_timeout="300,600,1200"
discard_delivered_msgs="true"/>
<UNICAST/>
<pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
max_bytes="4M"/>
<pbcast.GMS print_local_addr="true" join_timeout="3000"
view_bundling="true"/>
<UFC max_credits="2M"
min_threshold="0.4"/>
<MFC max_credits="2M"
min_threshold="0.4"/>
<FRAG2 frag_size="60K" />
<pbcast.STATE_TRANSFER />
</config>
В моем контексте весной XML у меня есть следующий (я помещу только фрагмент моего весеннего контекста файла):
<bean id="settaSystemProps" name="settaSystemProps" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="java.lang.System" />
<property name="targetMethod" value="getProperties" />
</bean>
</property>
<property
name="targetMethod" value="putAll" />
<property
name="arguments">
<util:properties>
<prop key="jgroups.logging.log_factory_class">it.test.cache.replication.jgroups.log.logback.impl.LogbackLogImpl</prop>
<prop key="java.net.preferIPv4Stack">true</prop>
</util:properties>
</property>
</bean>
<bean id="webCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" depends-on="settaSystemProps">
<property name="configLocation" value="classpath:webCoMiEhCacheCfg.xml"/>
</bean>
К сожалению, с помощью этой конфигурации, я не могу в отправке/приеме сообщений в кластере
Когда я начинаю кот я вижу следующую печать (и не использую свой собственный журнал) :
27 февраля 2015 10:31:18 AM org.jgroups.logging.JDKLogImpl ошибка Grave: удалось отправить сообщение для кластера (65 байт): java.lang.Exception: Dest =/228.8. 8.8: 45588 (68 bytes), причина: java.io.IOException: недействительный argume nt feb 27, 2015 10:31:19 AM org.jgroups.logging.JDKLogImpl error Могила: не удалось отправить сообщение кластеру (65 байт): java.lang.Exception: dest =/228.8.8.8: 45588 (68 байты), причина: java.io.IOException: недопустимый аргумент фев 27, 2015 10:31:28 AM org.jgroups.logging.JDKLogImpl error Могила: сообщение об ошибке не отправлено кластер (65 байт): java.lang .Exception: dest =/228.8.8.8: 45588 (68 bytes), cause: java.io.IOException: Неверный аргумент feb 27, 2015 10:31:28 AM org.jgroups.logging.JDKLogImpl error Могила: неудачная отправка сообщение в кластер (65 байт): java.lang.Exception: dest =/228.8.8.8: 45588 (68 bytes), cause: java.io.IOException: Недействительный аргумент
Может ли кто-нибудь сказать мне, где я ошибаюсь? Мне нужно синхронизировать EhCache на кластере, образованном двумя узлами
Может ли кто-нибудь предоставить мне образец рабочей конфигурации?
спасибо
Angelo
Я пробовал, как вы предложили, и теперь, похоже, он работает; в моей среде я установил следующие свойства: -Djava.net.preferIPv4Stack = true -Djgroups.logging.log_factory_class = customLog. Кэши теперь синхронизируются на кластере, образованном тремя узлами (2 tomcat и 1 IBM WAS), но мне кажется, что customLog не используется. В любом случае ... спасибо –
Возможно, вам нужно определить полное имя класса для настраиваемого журнала. Рад слышать, что это работает сейчас –
Я использовал полное квалифицированное имя (в раннем комментарии я использовал ярлык) Я постараюсь расследовать, потому что мне нужно использовать логическую реализацию регистратора ... спасибо –