2013-02-28 87 views
0

我已将我的项目从glassfish2.2.1迁移到JBoss eap-6.0。 迁移到JBoss后,我得到了下面的问题为什么jboss选择infinispan缓存而不是Ehcache

17:38:45581 ERROR [org.jboss.msc.service.fail(Server服务线程池 - 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] 在无法在 org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915构建的EntityManagerFactory) org.hiberna te.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.ca che.CacheException:不支持的接入类型 [非严格读写]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) 在 有机hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) ... 9更多

如果您以粗体检查日志,它将采用infinispan缓存,这就是为什么它会导致问题Unsupported access type [nonstrict-read-write],因为infinispan不支持这个问题。

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

xmlns:xsi =“http://www.w3。组织/ 2001/XMLSchema的实例”
的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。

谢谢

回答

0

好吧,我找出问题所在。

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

下面是行家依赖:

<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我已经给休眠的依赖3.4.6

相关问题