用JBoss的TreeCache作为Hibernate的二级缓存

Apache的集群配置略

假设两台电脑的IP分别为10.5.23.100和10.5.23.25。我们这里使用JBoss的default目录。

一:
将如下文件从%JBoss_Home%\server\all\lib里面拷到%JBoss_Home%\server\default\lib目录下:
jbossha.jar(加载org.jboss.ha.framework.server.ClusterPartition)
jgroups.jar(JBoss集群底层通信协议)

二:
编辑10.5.23.100的%JBoss_Home%\server\default\deploy\jboss-web.deployer\server.xml如下
<Engine name="jboss.web" defaultHost="localhost">

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">
其中node1要跟apache的workers.properties对应

三:
使用JBoss的TreeCacheAop
见10.5.23.100的%JBoss_Home%\server\default\deploy\jboss-web-cluster.sar\META-INF\的jboss-service.xml

四:使用JBoss的TreeCache作为Hibernate的二级缓存
在Hibernate.xml中配置二级缓存为jboss cache

<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.OptimisticTreeCacheProvider</prop>       
<prop key="hibernate.cache.provider_configuration_file_resource_path">config/jboss-cache.xml</prop>
<prop key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</prop>

POJO 中
Object Cache:@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
如果有关联集合,也要放到Cache中
Query Cache:setCacheable(true);

五:
工程项目的web.xml中加入如下代码
<distributable/>

六:按Session进行同步
Jboss-web.xml
<jboss-web>

  <replication-config>
<replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
<replication-granularity>SESSION</replication-granularity>
</replication-config>

</jboss-web>

七:获得JBoss Mbean来操作caceh
Application Cluster Cache:
TreeCahceAop:AISCache. getApplicationCacheInstance();
Hibernate  Cluster Cache:
TreeCache:AISCache. getHibernateCacheInstance();


你可能感兴趣的:(Hibernate,xml,Web,cache,jboss)