JBoss/Wildfly Hibernate 3类加载

JBoss/Wildfly Hibernate 3类加载,hibernate,wildfly,jboss-modules,Hibernate,Wildfly,Jboss Modules,我有一个ear文件,其中包含一个.war文件和许多.jar文件,包括springws和hibernate3。此应用程序将从另一个应用程序服务器移植到Wildfly 到目前为止,由于需要创建的所有模块及其几乎无限的依赖性,这一直是一个巨大的痛苦 我创建了一个jboss deployment structure.xml文件,其中声明了war依赖项: <sub-deployment name="xxx.war"> <dependencies> <m

我有一个ear文件,其中包含一个
.war
文件和许多
.jar
文件,包括
springws
hibernate3
。此应用程序将从另一个应用程序服务器移植到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>

问题是,如何更新deployment.xxxEAR.ear.xxp_jar.jar以包含适当的模块依赖项,即

如果使用Wildfy 10,hibernate 3支持

你使用的是什么版本的Wildfly

如果您使用的是Wildfly 10版本,但仍然希望使用hibernate 3版本,则可以检查打包的webapp中是否有所有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>

如果您使用Wildfy 10,则支持hibernate 3

你使用的是什么版本的Wildfly

如果您使用的是Wildfly 10版本,但仍然希望使用hibernate 3版本,则可以检查打包的webapp中是否有所有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>

如果您使用的是Wildfly 9或更低版本,则可以执行以下步骤将hibernate 3.5.6与应用程序捆绑在一起。将所有JAR添加到ear的lib文件夹中。将jboss-deployment-structure.xml添加到ear Meta Inf目录中

persistent.xml=>在绑定hibernate3时添加HibernatePersistence提供程序和提供程序模块非常重要

<?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>

org.hibernate.ejb.HibernatePersistence
java:/com/env/jdbc/OracleDS
jboss-deployment-structure.xml=>删除wildfly组装的hibernate

<?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>

假的

如果您使用的是Wildfly 9或更低版本,则可以执行以下步骤将hibernate 3.5.6与应用程序捆绑在一起。将所有JAR添加到ear的lib文件夹中。将jboss-deployment-structure.xml添加到ear Meta Inf目录中

persistent.xml=>在绑定hibernate3时添加HibernatePersistence提供程序和提供程序模块非常重要

<?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>

org.hibernate.ejb.HibernatePersistence
java:/com/env/jdbc/OracleDS
jboss-deployment-structure.xml=>删除wildfly组装的hibernate

<?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>

假的

您必须将Hibernate依赖项添加到
xxp\u jar.jar
pom.xml
文件中。如果我做得正确,依赖项问题仍然存在。有没有办法将它与JBoss模块依赖项联系起来?顺便问一下,您使用的是哪个版本的JBoss/Wildfly?您必须将Hibernate依赖项添加到
xxp\u jar.jar
pom.xml
文件中。如果我做得正确,依赖项问题仍然存在。有没有办法将它与JBoss模块依赖项联系起来?顺便问一下,您使用的是哪个版本的JBoss/Wildfly?雷米,谢谢您回答我的问题。为了回应你的建议,1。我不能忽视Hibernate3。2.我将其作为模块包含在system modules文件夹下。除了Wildfly试图部署子dployment deployment.xxxEAR.ear.xxp_jar.jar之外,一切似乎都正常。这就是它开始抱怨冬眠不存在的地方。为什么您不能完全通过修改ear来忽略Hibernate3JBoss模块,因为您说过它已经包含Hibernate3libs了?另外,你能分享你的自定义HibernateJBoss模块吗?(文件列表加描述符)。ThksHi Remi,我如何通过ear创建依赖关系?我是否被迫使用pom.xml文件?这个应用程序是我继承的。它仍然在使用Ant在Eclipse中构建。好的,首先,对于ear依赖项,您可以依赖jboss模块(有时不需要对进行任何操作),或者在包中包含所需的LIB(ear、war等)。由于您的ear通常包含所有hibernate 3 lib,因此您通常只需在ear jboss-deployment-structure.xml文件中添加hibernate排除。然后,不需要为此配置maven(即使依赖项管理在maven或Ivy+ANT中更容易),遗憾的是,我继续得到以下结果:对于在类路径资源[config/context hibernate.xml]中定义的名为“xxxListener”的bean:类文件或依赖类有问题;嵌套的异常是java.lang.LinkageError:未能链接com/bb/cc/xxy/xxp/listener/xxxListener(服务模块加载器中的模块\“deployment.xxxEAR.ear.persistence_jar.jar:main\”)Remi,感谢您回答我的问题。为了回应你的建议,1。我不能忽视Hibernate3。2.我将其作为模块包含在system modules文件夹下。除了Wildfly试图部署子dployment deployment.xxxEAR.ear.xxp_jar.jar之外,一切似乎都正常。这就是它开始抱怨冬眠不存在的地方。为什么您不能完全通过修改ear来忽略Hibernate3JBoss模块,因为您说过它已经包含Hibernate3libs了?另外,你能分享你的自定义HibernateJBoss模块吗?(文件列表加描述符)。ThksHi Remi,我如何通过ear创建依赖关系?我是否被迫使用pom.xml文件?这个应用程序是我继承的。它仍然在使用Ant在Eclipse中构建