为什么jboss选择infinispan缓存而不是Ehcache

时间:2013-02-28 12:22:44

标签: ehcache jboss6.x infinispan

我已将我的项目从glassfish2.2.1迁移到JBoss eap-6.0。 迁移到Jboss后,我遇到了以下问题

  

17:38:45,581 ERROR [org.jboss.msc.service.fail](ServerService Thread   池 - 62)MSC000001:无法启动服务   。jboss.persistenceunit “unbranded.ear#的EntityManager”:   服务中的org.jboss.msc.service.StartException   。jboss.persistenceunit “unbranded.ear#的EntityManager”:   javax.persistence.PersistenceException:[PersistenceUnit:   entityManager]无法构建EntityManagerFactory   org.jboss.as.jpa.service.PersistenceUnitServiceImpl $ 1.run(PersistenceUnitServiceImpl.java:100)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886)   [rt.jar:1.6.0_23] at   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908)   [rt.jar:1.6.0_23] at java.lang.Thread.run(Thread.java:662)   [rt.jar:1.6.0_23] at   org.jboss.threads.JBossThread.run(JBossThread.java:122)

     

引起:javax.persistence.PersistenceException:[PersistenceUnit:   entityManager]无法构建EntityManagerFactory   org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)     在   org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)     在   org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)     在   org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:197)     在   org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access $ 500(PersistenceUnitServiceImpl.java:57)     在   org.jboss.as.jpa.service.PersistenceUnitServiceImpl $ 1.run(PersistenceUnitServiceImpl.java:96)     ......还有4个

     

引起: org.hibernate.cache.CacheException:不支持的访问类型   [nonstrict-read-write] at   的 org.hibernate.cache.infinispan.entity.EntityRegionImpl.buildAccessStrategy(EntityRegionImpl.java:33)     在   org.hibernate.internal.SessionFactoryImpl。(SessionFactoryImpl.java:345)     在   org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1746)     在   org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:94)     在   org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)     ... 9更多

如果您以粗体检查日志,则会使用infinispan缓存,这就是导致问题不受支持的访问类型[nonstrict-read-write]的原因,因为infinispan不支持此问题。

但我的persistence.xml是否配置了ehcache。下面是我的persistence.xml

  

  的xmlns:的xsi = “http://www.w3.org/2001/XMLSchema-instance”
  的xsi:的schemaLocation =“http://java.sun.com/xml/ns/persistence   http://java.sun.com/xml/ns/persistence/persistence _ 1_0.xsd“
  版本= “1.0” >         org.hibernate.ejb.HibernatePersistence         JDBC / EJB /无商标的           casinomodule.core.audit.AuditTrail                                                                                              

     <!-- <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.CMTTransactionFactory"/> -->
     <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup"/>
     <property name="hibernate.cache.use_query_cache" value="true"/>
     <property name="hibernate.query.jpaql_strict_compliance" value="false"/>
     <property name="hibernate.session_factory_name" value="HibernateSession"/>
     <property name="hibernate.bytecode.use_reflection_optimizer" value="true"/>


     <property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletonEhCacheProvider"/>
     <property name="hibernate.cache.use_second_level_cache" value="true"/>

  </properties>    </persistence-unit> </persistence>

不知道为什么jboss正在使用infinispan而不是Ehcache。

感谢

1 个答案:

答案 0 :(得分:0)

好的,我找出了问题。

这是由于旧的maven依赖项和我在persistence.xml文件中添加的属性引起的。

以下是maven依赖:

 <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>4.1.9.Final</version>
      </dependency>

以下是我的persistence.xml文件中添加的新属性。

<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>

这种情况正在发生,因为我正在使用JBoss eap-6.0。它也使用hibernate作为JPA提供程序,它使用的是hibernate 4.1.9.Final版本。以前在我的maven中,我已经将hibernate的依赖关系作为3.4.6