首页 文章

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

提问于
浏览
0

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

17:38:45,581 ERROR [org.jboss.msc.service.fail](ServerService线程池 - 62)MSC000001:无法启动服务jboss.persistenceunit . “unbranded.ear #entityManager”:org.jboss.msc . service.StartException in service jboss.persistenceunit . “unbranded.ear #entityManager”:javax.persistence.PersistenceException:[PersistenceUnit:entityManager]无法在org.jboss.as.jpa.service.PersistenceUnitServiceImpl $ 1.run(PersistenceUnitServiceImpl . )中构建EntityManagerFactory . java:100)at 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]无法在org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Confi)构建EntityManagerFactory guration.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:org.hibernate.cache.infinispan.entity.EntityRegionImpl.buildAccessStrategy(EntityRegionImpl.java:不支持的访问类型[nonstrict-read-write]: 33)org.hibernate.internal.SessionFactoryImpl . (SessionFactoryImpl.java:345)org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1746)atg.hibernate.ejb.EntityManagerFactoryImpl . (EntityManagerFactoryImpl.java:94 )org.h ibernate.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“version =”1.0“> org.hibernate.ejb.HibernatePersistence jdbc / ejb / unbranded 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

    好的,我找出问题所在 .

    这是由于旧的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

相关问题