我已将我的项目从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” &GT; 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 :(得分: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