2015-02-24 174 views
4

我試圖從似乎很好的ehcache切換到'原生'Wildfly的Infinispan。我沒有對WildFly的默認配置進行任何更改,我使用的是hibernate和infinispan內置模塊。 我開始與基本的持久性配置,如:WildFly8.2.0.Final,Hibernate,Infinispan:org.hibernate.cache.CacheException:不支持的訪問類型[讀寫]

<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> 

後來我嘗試添加Google搜索屬性...

  • 這第一次是我FAVORIT:

     <property name="hibernate.cache.default_cache_concurrency_strategy" value="read-only"/> 
    

之後也使用所有可選值,如transactional,read-onlynontrict 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"> 

回答

4

Infinispan的休眠2LC只支持read-onlytransactional策略。我們計劃增加read-writenon-strict-read-write,但我們還沒有這樣做。

應該不需要添加hibernate.cache.infinispan.containerhibernate.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> 

然後,你需要他們,例如添加屬性啓用查詢緩存,如果你需要......等

+0

嗨高德,感謝您的回覆...我把persistence.xml簡化爲儘可能簡單(意思與您所建議的完全相同),具有相同的結果...' org.hibernate.cache.CacheException:不支持的訪問類型[讀寫]' – mirec 2015-02-25 17:45:37

+0

要重申,「讀寫」_is_not_supported_ – 2015-03-03 09:41:21

+0

如何將讀寫改爲其他任何內容?我沒有配置類似的東西,爲什麼它試圖將它用作默認值?即使當我設置'' – mirec 2015-03-04 12:46:02

相關問題