JBoss и разные версии Hibernate - PullRequest
10 голосов
/ 04 ноября 2010

Мы используем JBoss 4.2.3, который в свою очередь поставляется с версией 3.2.1.ga Hibernate.Я хотел бы использовать Hibernate 3.5.1-FINAL, который поддерживает JPA 2.0.Я пытался сделать эту работу, поместив свои собственные спящие файлы в мою папку WEB-INF / lib и создав собственный загрузчик классов для моей WAR в jboss-web.xml

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

Я такжепопробовал:

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

Но я получаю множество различных проблем, и это исключение, на котором я сейчас застрял:

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)

Поскольку приближается срок, я подумал, что лучшеспросите, возможно ли это вообще?:)

Ответы [ 2 ]

14 голосов
/ 21 июля 2011

Может быть, слишком поздно, но это может помочь кому-то, кто находит этот поток, ищущий проблему, описанную выше о 'Вызванном: 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>
8 голосов
/ 05 ноября 2010

Я не проверял это лично, но следующий поток упоминает два подхода, которые вы могли бы попробовать (да, я знаю, это касается JBoss 5, но похоже, что проблема идентична).

Опция 1

Отключить java2ParentDelegation (ваш второй jboss-web.xml), связать ваши JAR-файлы Hibernate в ваше приложение и добавить следующие свойства в ваш persistence.xml (чтобы «избежать» проблемы)вы сталкиваетесь):

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

Один пользователь сообщил, что это не работает для него.

Вариант 2

Отключить java2ParentDelegation (ваш второй jboss-web).xml), включите JAR-файлы Hibernate в свое приложение и переопределите JAR-файлы средства проверки hibernate в common/lib.

Я не могу объяснить, почему средство проверки подлинности hibernate из commons/lib все еще выбирается.

...