我正试图从似乎运行良好的ehcache切换到'本地'Wildfly的Infinispan。我没有对WildFly的默认配置进行任何更改,而且我正在使用hibernate和infinispan内置模块。 我开始使用基本的持久性配置,如:
<persistence-unit name="frmwrkjta" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/ds/frmwrkmysqljta</jta-data-source>
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode><!-- ALL, NONE, ENABLE_SELECTIVE,DISABLE_SELECTIVE, UNSPECIFIED -->
<properties>
<property name="shared-cache-mode" value="ENABLE_SELECTIVE" />
<!-- <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/> -->
<property name="net.sf.ehcache.configurationResourceName" value="META-INF/ehcache-persistence.xml" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.generate_statistics" value="true" />
<property name="hibernate.cache.infinispan.statistics" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<!-- <property name="hibernate.hbm2ddl.auto" value="update" /> -->
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.show_sql" value="true" />
<property name="org.hibernate.envers.audit_table_suffix" value="_log" />
<property name="org.hibernate.envers.revision_field_name" value="dbrevision_r" />
<property name="org.hibernate.envers.revision_type_field_name" value="dbrevtype" />
</properties>
</persistence-unit>
后来我试图添加googled属性......
第一个是我最喜欢的:
<property name="hibernate.cache.default_cache_concurrency_strategy" value="read-only"/>
之后还使用了所有可选值,例如transactional
,read-only
,nontrict read-write
,甚至read-write
;)
然后:
<property name="hibernate.cache.infinispan.container" value="hibernate"/>
后:
<property name="hibernate.cache.region.factory_class" value="org.jboss.as.jpa.hibernate4.infinispan.SharedInfinispanRegionFactory" />
所有这些都以失败的部署异常结束:
org.hibernate.cache.CacheException: Unsupported access type [read-write]
我在实体中仅使用JPA的@Cacheable
注释......
我错过了什么,我做错了什么?
编辑:
不确定是否重要。我正在添加省略的persistence.xml开头...我正在尝试使用JPA2.1:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" version="2.1">
答案 0 :(得分:3)
Infinispan Hibernate 2LC仅支持read-only
和transactional
策略。我们计划添加read-write
和non-strict-read-write
,但我们还没有这样做。
不需要添加hibernate.cache.infinispan.container
或hibernate.cache.region.factory_class
属性。
我建议您从这样的简单配置开始:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="frmwrkjta">
<description>example of enabling the second level cache.</description>
<jta-data-source>java:jboss/ds/frmwrkmysqljta</jta-data-source>
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
<properties>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
</properties>
</persistence-unit>
</persistence>
然后根据需要添加属性,例如如果需要......等,启用查询缓存