Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JBoss and different versions of Hibernate

We are using JBoss 4.2.3 which in turn comes with version 3.2.1.ga of Hibernate. I would like to use Hibernate 3.5.1-FINAL which supports JPA 2.0. I've been trying to make this work by putting my own hibernate jars in my WEB-INF/lib folder and creating my own classloader for my WAR in jboss-web.xml

<jboss-web>
   <loader-repository> 
      com.moo.foo:archive=catalog-archive 
   </loader-repository> 
</jboss-web> 

I've also tried:

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

But I get loads of various issues and this is the exception I'm currently stuck on:

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)

Since the deadline is looming I thought I'd better ask if it is even possible? :)

like image 443
willcodejavaforfood Avatar asked Nov 04 '10 14:11

willcodejavaforfood


2 Answers

Maybe too late, but it may help somebody that finds this thread looking for the problem described above about 'Caused by: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator....':

I'm using Jboss 4.2, Hibernate Core 3.6.5, Hibernate Validator 4.1.0, using maven, and I have the same problem. Finally I've solved it adding also this dependency:

    <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-validator-legacy</artifactId>
          <version>4.0.2.GA</version>
    </dependency>
like image 72
Juan Manuel Perez Avatar answered Oct 02 '22 10:10

Juan Manuel Perez


I didn't test this personally, but the following thread mentions two approaches that you could try (yeah, I know, it's about JBoss 5 but it looks like the problem is identical).

Option 1

Disable java2ParentDelegation (your second jboss-web.xml), bundle your Hibernate JARs into your app and add the following properties to your persistence.xml (to "avoid" the issue you're facing):

<property name="hibernate.validator.apply_to_ddl">false</property>
<property name="hibernate.validator.autoregister_listeners">false</property>

One user reported this didn't work for him.

Option 2

Disable java2ParentDelegation (your second jboss-web.xml), bundle your Hibernate JARs into your app and override the hibernate-validator JARs in common/lib.

I'm not able to explain why the hibernate-validator from commons/lib still gets picked.

like image 24
Pascal Thivent Avatar answered Oct 02 '22 08:10

Pascal Thivent