我有一个ear文件,其中包含.war
个文件和一些.jar
个文件,包括Spring WS
和Hibernate 3
。此应用程序将从另一个应用程序服务器移植到Wildfly。
到目前为止,由于需要创建的所有模块及其几乎无限的依赖性,这一直是一种巨大的痛苦。
我创建了一个jboss-deployment-structure.xml
文件,我在其中声明了war
个依赖项:
<sub-deployment name="xxx.war">
<dependencies>
<module name="org.hibernate" slot="3"/>
<module name="org.spring.jdbc" />
<module name="org.spring.beans" />
<module name="org.spring.core" />
<module name="org.slf4j" />
</dependencies>
</sub-deployment>
尝试部署应用时,出现以下错误:
Caused by: java.lang.ClassNotFoundException: org.hibernate.event.PreUpdateEventListener from [Module "deployment.xxxEAR.ear.xxp_jar.jar:main" from Service Module Loader]
问题是,如何更新deployment.xxxEAR.ear.xxp_jar.jar以包含正确的模块依赖项,即<module name="org.hibernate" slot="3"/>
?
答案 0 :(得分:0)
如果您使用Wildfy 10,则hibernate 3支持has been removed。
你准确使用哪种版本的Wildfly?
如果您使用Wildfly 10版本,并且仍想使用hibernate 3版本,则可以检查您的打包Web应用程序中是否包含所有hibernate 3 maven依赖项。
你也可以在你的jboss-deployment-structure.xml文件中排除这样的hibernate jboss模块,这样你的webapp就不再依赖Wildfly的hibernate jboss模块了:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.hibernate" />
</exclusions>
</deployment>
</jboss-deployment-structure>
答案 1 :(得分:0)
如果您使用的是Wildfly 9或更低版本,您可以执行以下步骤将hibernate 3.5.6与您的应用程序捆绑在一起。将所有罐子添加到耳朵的lib文件夹中。将jboss-deployment-structure.xml添加到耳部Meta-Inf目录中。
persistent.xml =&gt;将HibernatePersistence提供程序和提供程序模块添加为hibernate3-bundled非常重要。
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 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" >
<persistence-unit name='pursem'>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/com/env/jdbc/OracleDS</jta-data-source>
<properties>
<property name="jboss.entity.manager.jndi.name" value="java:EntityManager/rsem"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect"/>
<property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />
<!-- property name="hibernate.hbm2ddl.auto" value="update"/ -->
</persistence-unit>
</persistence>
jboss-deployment-structure.xml =&gt;去除野生苍蝇组装的冬眠
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<exclusions>
<module name="org.hibernate"/>
</exclusions>
</deployment>
</jboss-deployment-structure>