JBoss / Wildfly Hibernate 3分类加载

时间:2016-02-12 15:35:04

标签: hibernate wildfly jboss-modules

我有一个ear文件,其中包含.war个文件和一些.jar个文件,包括Spring WSHibernate 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"/>

2 个答案:

答案 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>