2016-09-06 58 views
0

我嘗試使用wildfly 10.0.x在Hiberante.Im中啓用二級緩存。未安裝Infinispan自定義緩存命令工廠

Persistent.xml

<persistence-unit name="apidb-persistence-unit" 
     transaction-type="JTA"> 
    <jta-data-source>java:jboss/datasources/DS</jta-data-source> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <shared-cache-mode>ALL</shared-cache-mode> 
.. 
    <property name="hibernate.cache.use_second_level_cache" value="true"/> 
      <property name="hibernate.cache.use_query_cache" value="true"/> 


     </properties> 
    </persistence-unit> 

當我部署我的web應用;即時得到異常;

我添加了以下兩個依賴關係;

我在這裏錯過了什麼?

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-infinispan</artifactId> 
    <version>5.2.2.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.infinispan</groupId> 
    <artifactId>infinispan-core</artifactId> 
    <version>8.2.4.Final</version> 
</dependency> 

16:11:16,835 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 64) MSC000001: Failed to start service jboss.persistenceunit."apidb.war#apidb-persistence-unit": org.jboss.msc.service.StartException in service jboss.persistenceunit."apidb.war#apidb-persistence-unit": javax.persistence.PersistenceException: [PersistenceUnit: apidb-persistence-unit] Unable to build Hibernate SessionFactory 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:179) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:121) 
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:667) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:193) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: apidb-persistence-unit] Unable to build Hibernate SessionFactory 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:961) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:891) 
    at org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:161) 
    ... 7 more 
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.spi.CacheImplementor] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:264) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:228) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:207) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:238) 
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:483) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:888) 
    ... 9 more 
Caused by: org.hibernate.cache.CacheException: HHH025011: Infinispan custom cache command factory not installed (possibly because the classloader where Infinispan lives couldn't find the Hibernate Infinispan cache provider) 
    at org.hibernate.cache.infinispan.InfinispanRegionFactory.getCacheCommandFactory(InfinispanRegionFactory.java:748) 
    at org.hibernate.cache.infinispan.InfinispanRegionFactory.startRegion(InfinispanRegionFactory.java:604) 
    at org.hibernate.cache.infinispan.InfinispanRegionFactory.buildTimestampsRegion(InfinispanRegionFactory.java:390) 
    at org.hibernate.internal.CacheImpl.<init>(CacheImpl.java:78) 
    at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:28) 
    at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:20) 
    at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:55) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:254) 
    ... 14 more 
+2

嗯,也許問題是,你在你的應用程序中部署的Infinispan,而不是讓服務器插件自身的版。所有Infinispan依賴關係都應該標記爲「提供」。 –

+0

謝謝..我會試試這個。 – Ratha

回答

0

我已經修復了這個問題,只有在persistence.xml中設置了下面的屬性並編輯了我的standalone.xml。

的persistence.xml

<persistence-unit name="apidb-persistence-unit" 
      transaction-type="JTA"> 
      <description>Forge Persistence Unit</description> 
      <provider>org.hibernate.ejb.HibernatePersistence</provider> 
      <jta-data-source>java:jboss/datasources/lobDS</jta-data-source>  
      <shared-cache-mode>ALL</shared-cache-mode> 
    <properties> 
     <property name="hibernate.cache.use_second_level_cache" value="true"/> 

      </properties> 
     </persistence-unit> 

standalone.xml

<cache-container name="hibernate" default-cache="local-query" module="org.hibernate.infinispan:5.2.1.Final"> 
       <local-cache name="entity"> 
        <transaction mode="NON_XA"/> 
        <eviction strategy="LRU" max-entries="10000"/> 
        <expiration max-idle="100000"/> 
       </local-cache> 
       <local-cache name="local-query"> 
        <eviction strategy="LRU" max-entries="10000"/> 
        <expiration max-idle="100000"/> 
       </local-cache> 
       <local-cache name="timestamps"/> 
      </cache-container> 
+0

一般而言,我不認爲應該有必要更改2LC緩存容器配置。看到我上面的建議。 –