JPA / Hibernate提供程序捆绑在我的应用程序中,但是在将它部署到wildfly 8.1时遇到了麻烦 . 即我正在使用一个名为OpenXava的OSS项目,它与自己的Hibernate版本捆绑在一起 . 我以前在JBoss 5.1上取得了成功,但是当我部署它时,WildFly 8.1给了我一个错误 .
我已经问过OpenXava的首席开发人员,他说这很可能是配置WildFly使用war文件中捆绑的JPA提供程序的问题 . 我查看了WF的文档,找到了jboss.as.jpa.providerModule设置 . 我已经尝试将其设置为应用程序,并且hibernate3-bundled,并且都不起作用 . 我也试过通过jboss-deployment-structure.xml排除模块 . 这造成了一些不同的错误,但似乎没有成功 .
有没有人知道发生了什么?
我的jboss-deployment-structure.xml看起来像:
<deployment>
<exclusions>
<module name="org.dom4j" />
<module name="org.hibernate"/>
<module name="javax.persistence.api"/>
</exclusions>
</deployment>
我的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">
<!-- Tomcat + Hypersonic -->
<persistence-unit name="default">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.openxava.session.GalleryImage</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="jboss.as.jpa.providerModule" value="application" />
</properties>
</persistence-unit>
<!-- JUnit Hypersonic -->
<persistence-unit name="junit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost:1666"/>
</properties>
当我部署应用程序时,它返回以下错误(我正在使用OpenXava中提供的示例应用程序MySchool.war):
13:15:17,563 ERROR [org.jboss.msc.service.fail](MSC服务主题1-4)MSC000001:无法启动服务jboss.deployment.unit . “MySchool.war”.FIRST_MODULE_USE:org.jboss.msc服务jboss.deployment.unit中的.service.StartException . “MySchool.war”.FIRST_MODULE_USE:JBAS018733:无法处理部署FIRST_MODULE_USE部署“MySchool.war”
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_05]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_05]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_05]
引起:org.jboss.as.server.deployment.DeploymentUnitProcessingException:JBAS011426:无法部署应用程序打包的持久性提供程序'org.hibernate.ejb.HibernatePersistence'
at org.jboss.as.jpa.processor.PersistenceProviderHandler.deploy(PersistenceProviderHandler.java:81)
at org.jboss.as.jpa.processor.PersistenceBeginInstallProcessor.deploy(PersistenceBeginInstallProcessor.java:49)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
... 5 more
引起:java.lang.ClassCastException:class org.hibernate.ejb.HibernatePersistence
at java.lang.Class.asSubclass(Class.java:3293) [rt.jar:1.8.0_05]
at org.jboss.as.jpa.processor.PersistenceProviderHandler.deploy(PersistenceProviderHandler.java:74)
... 7 more
13:15:17,587 ERROR [org.jboss.as.controller.management-operation](控制器启动线程)JBAS014613:操作(“部署”)失败 - 地址:([(“deployment”=>“MySchool.war”) ]) - 失败描述:{“JBAS014671:Failed services”=> {“jboss.deployment.unit . \”MySchool.war \“ . FIRST_MODULE_USE”=>“org.jboss.msc.service.StartException in service jboss.deployment .unit . \“MySchool.war \” . FIRST_MODULE_USE:JBAS018733:无法处理部署FIRST_MODULE_USE部署\“MySchool.war \”
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011426: Could not deploy application packaged persistence provider 'org.hibernate.ejb.HibernatePersistence'
Caused by: java.lang.ClassCastException: class org.hibernate.ejb.HibernatePersistence"}}
2 回答
根据Winldfly 8 documentation,您需要更改持久性提供程序:
至:
我相信问题的原因是你错过了这种依赖
添加依赖后,我设法在Wildfly8.2.Final中使用Hibernate 4.3.5.Final .