JBoss和不同版本的Hibernate

wil*_*ood 10 java jboss hibernate classloader

我们使用的是JBoss 4.2.3,后者又带有Hibernate的3.2.1.ga版本.我想使用支持JPA 2.0的Hibernate 3.5.1-FINAL.我一直试图通过将我自己的hibernate jar放在我的WEB-INF/lib文件夹中并在jboss-web.xml中为我的WAR创建自己的类加载器来完成这项工作.

<jboss-web>
   <loader-repository> 
      com.moo.foo:archive=catalog-archive 
   </loader-repository> 
</jboss-web> 
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

<jboss-web>
 <class-loading java2ClassLoadingCompliance="false">
  <loader-repository>
     com.moo.catalog:loader=catalogLoader
     <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
  </loader-repository>
 </class-loading>
</jboss-web>
Run Code Online (Sandbox Code Playgroud)

但是我遇到了各种各样的问题,这是我目前坚持的例外:

Caused by: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.getDeclaredConstructor(Unknown Source)
    at org.hibernate.cfg.AnnotationConfiguration.applyHibernateValidatorLegacyConstraintsOnDDL(AnnotationConfiguration.java:443)
Run Code Online (Sandbox Code Playgroud)

由于截止日期即将来临,我想我最好问一下它是否可能?:)

Jua*_*rez 14

可能为时已晚,但它可能会帮助找到此线程的人找到上面描述的问题'由:java.lang.NoSuchMethodException:org.hibernate.validator.ClassValidator ....':

我正在使用Jboss 4.2,Hibernate Core 3.6.5,Hibernate Validator 4.1.0,使用maven,我遇到了同样的问题.最后我解决了它还添加了这个依赖:

    <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-validator-legacy</artifactId>
          <version>4.0.2.GA</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)


Pas*_*ent 8

我没有亲自测试过,但是下面的主题 提到了两种你可以尝试的方法(是的,我知道,它是关于JBoss 5的,但看起来问题是相同的).

选项1

禁用java2ParentDelegation(您的第二个jboss-web.xml),将您的Hibernate JAR捆绑到您的应用程序中并向您添加以下属性persistence.xml(以"避免"您面临的问题):

<property name="hibernate.validator.apply_to_ddl">false</property>
<property name="hibernate.validator.autoregister_listeners">false</property>
Run Code Online (Sandbox Code Playgroud)

一位用户报告说这对他不起作用.

选项2

关闭java2ParentDelegation(你的第二个的jboss-web.xml)中,捆绑你的Hibernate JAR文件到您的应用程序和重载Hibernate验证器的JAR common/lib.

我无法解释为什么commons/lib仍然会选择hibernate-validator .