2015-05-12 6 views
3

Мы использовали Hazelcast в качестве провайдера кеша Hibernate L2 для нашего приложения с той же БД и развертывали как два разных веб-приложения.Использование одного и того же кэша L2 для спящего режима для разных веб-приложений с использованием многоадресной рассылки Hazelcast

webApp1.war: с помощью DB1

webApp2.war: с помощью DB1

конфигурации hazelcast как для веб-приложений, такие же, как:

 <multicast enabled="true"> 
      <multicast-group>224.2.2.3</multicast-group> 
      <multicast-port>54327</multicast-port> 
     </multicast> 

имя группы и пароль также одинаковы для как веб-приложения.

Hazelcast добавляет их в кластер с различными узлами, который также отображается в центре управления Hazelcast.

Hazelcast создает два разных Карты для одного и того же объекта СУБД для этих веб-приложений. Таким образом, например, Если сущность «еда» обновляется «webApp1», она не будет отражена в «webApp2».

центр управления показывает, он создал две разные карты для «еды», т.е. webApp1.war: мука и webApp2.war: мука

Можете ли вы предложить, используя многоадресную, как использовать тот же кэш L2 для двух различные webapps в том же кластере.

Редактировать - 1: Конфигурация спящего режима - persistence.xml

<jta-data-source>java:jboss/datasources/mealsDS</jta-data-source> 
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> 

    <properties> 
     <property name="hibernate.connection.pool_size" value="1" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.cache.use_second_level_cache" value="true"/> 
     <property name="hibernate.cache.region.factory_class" value="com.hazelcast.hibernate.HazelcastCacheRegionFactory"/> 
    </properties> 
</persistence-unit> 

Hazelcast Конфигурация - Hazelcast.xml (аналогично предусмотрено в hazelacast.jar)

<group> 
    <name>local</name> 
    <password>local-pass</password> 
</group> 

<management-center enabled="true">http://localhost:8080/mancenter 
</management-center> 
<network> 
    <port auto-increment="true" port-count="100">5701</port> 
    <outbound-ports> 
     <ports>0</ports> 
    </outbound-ports> 
    <join> 
     <multicast enabled="true"> 
      <multicast-group>224.2.2.3</multicast-group> 
      <multicast-port>54327</multicast-port> 
     </multicast> 
     <tcp-ip enabled="false"> 
      <interface>127.0.0.1</interface> 
     </tcp-ip> 
     <aws enabled="false"> 
      <access-key>my-access-key</access-key> 
      <secret-key>my-secret-key</secret-key> 
      <region>us-west-1</region> 
      <host-header>ec2.amazonaws.com</host-header> 
      <security-group-name>hazelcast-sg</security-group-name> 
      <tag-key>type</tag-key> 
      <tag-value>hz-nodes</tag-value> 
     </aws> 
    </join> 
    <interfaces enabled="false"> 
     <interface>10.10.1.*</interface> 
    </interfaces> 
    <ssl enabled="false" /> 
    <socket-interceptor enabled="false" /> 
    <symmetric-encryption enabled="false"> 
     <algorithm>PBEWithMD5AndDES</algorithm> 
     <salt>thesalt</salt> 
     <password>thepass</password> 
     <iteration-count>19</iteration-count> 
    </symmetric-encryption> 
</network> 
<partition-group enabled="false" /> 
<executor-service name="default"> 
    <pool-size>16</pool-size> 
    <queue-capacity>0</queue-capacity> 
</executor-service> 
<queue name="default"> 
    <max-size>0</max-size> 
    <backup-count>1</backup-count> 
    <async-backup-count>0</async-backup-count> 
    <empty-queue-ttl>-1</empty-queue-ttl> 
</queue> 
<map name="default"> 
    <in-memory-format>BINARY</in-memory-format> 
    <backup-count>1</backup-count> 
    <async-backup-count>0</async-backup-count> 
    <time-to-live-seconds>0</time-to-live-seconds> 
    <max-idle-seconds>0</max-idle-seconds> 
    <eviction-policy>NONE</eviction-policy> 
    <max-size policy="PER_NODE">0</max-size> 
    <eviction-percentage>25</eviction-percentage> 
    <min-eviction-check-millis>100</min-eviction-check-millis> 
    <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy 
    </merge-policy> 
</map> 
<multimap name="default"> 
    <backup-count>1</backup-count> 
    <value-collection-type>SET</value-collection-type> 
</multimap> 
<multimap name="default"> 
    <backup-count>1</backup-count> 
    <value-collection-type>SET</value-collection-type> 
</multimap> 
<list name="default"> 
    <backup-count>1</backup-count> 
</list> 
<set name="default"> 
    <backup-count>1</backup-count> 
</set> 
<jobtracker name="default"> 
    <max-thread-size>0</max-thread-size> 
    <queue-size>0</queue-size> 
    <retry-count>0</retry-count> 
    <chunk-size>1000</chunk-size> 
    <communicate-stats>true</communicate-stats> 
    <topology-changed-strategy>CANCEL_RUNNING_OPERATION 
    </topology-changed-strategy> 
</jobtracker> 
<semaphore name="default"> 
    <initial-permits>0</initial-permits> 
    <backup-count>1</backup-count> 
    <async-backup-count>0</async-backup-count> 
</semaphore> 
<serialization> 
    <portable-version>0</portable-version> 
</serialization> 
<services enable-defaults="true" /> 

+0

Пожалуйста, поделитесь своими версиями орехового дерева и гибернации –

+0

Вик, я обновил свой вопрос с помощью конфигураций Hazelcast и Hibernate. – jack

ответ

1

Решенный этот, установив свойство в моем persistence.xml

<property name="hibernate.cache.region_prefix" value="myApp"/> 

если это свойство не установлено, оно ограничивает спящий режим, чтобы добавить название приложения к карте создается в памяти , поэтому для обоих веб-приложений существует только одна карта, независимо от того, использует ли они один и тот же БД или нет.

+0

Можете ли вы обновить этот ответ с именем свойства? –

+0

обновил свойство .. не знал о форматировании stackoverflow ... :) – jack