Возможно настроить EhCache для использования в кластерной среде.Каждое приложение будет иметь свой собственный кеш, но изменения одного кеша реплицируются на другие в кластере.Чтобы использовать JGroups для этой цели, вы можете добавить что-то вроде следующего в ваш файл ehcache.xml:
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" properties="connect=UDP(mcast_addr=231.12.21.132;mcast_port=45566;ip_ttl=32; mcast_send_buf_size=150000;mcast_recv_buf_size=80000): PING(timeout=2000;num_initial_members=6): MERGE2(min_interval=5000;max_interval=10000): FD_SOCK:VERIFY_SUSPECT(timeout=1500): pbcast.NAKACK(gc_lag=10;retransmit_timeout=3000): UNICAST(timeout=5000): pbcast.STABLE(desired_avg_gossip=20000): FRAG: pbcast.GMS(join_timeout=5000;join_retry_timeout=2000; shun=false;print_local_addr=true)" propertySeparator="::"/>
Затем добавьте следующее в элемент defaultcache:
<cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true, replicateUpdatesViaCopy=true, replicateRemovals=true"/>
Я узнал об этомиз главы в Java Persistence с Hibernate, которую я бы рекомендовал прочитать.В нем говорится, что приведенный выше пример взят из документации EhCache.
Если вы не хотите, чтобы у каждого приложения был свой кэш, прочитайте Infinispan.