Как настроить JBoss 7.1.1 с спящим режимом 4.1 и Envers 4.1?

У меня проблема в моем проекте. Мы используем JBoss7.1.1 и хотим использовать envers версии 4.1. Envers в версии 4.1 требует Hibernate в версии 4.1. К сожалению, jboss 7.1.1 содержит старые модули hibernate и Envers.

У меня есть 2 варианта:

Изменить модули в JBoss (поставить туда новые оболочки и перевести в спящий режим). Проблема в том, что каждый jboss, который будет запускать это приложение, должен быть «настроен» для этого проекта (немного болезненно).

Or:

Исключите модули JBoss и используйте библиотеки из WEB-INF/lib внутри войны. Я исключил модули, используя:

<jboss-deployment-structure>
    <ear-subdeployments-isolated>true</ear-subdeployments-isolated>
    <deployment>
        <!-- Exclusions allow you to prevent the server from automatically adding some dependencies     -->
        <exclusions>
            <module name="org.hibernate"/>
            <module name="org.hibernate.envers"/>
        </exclusions>
    </deployment>
</jboss-deployment-structure>

Я изменил зависимости в maven с предоставленных на компиляцию, и это должно работать, верно?

Но теперь я получаю это исключение:

Caused by: java.lang.IllegalArgumentException: interface org.hibernate.annotations.Columns is not visible from class loader
    at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353) [classes.jar:1.6.0_35]
    at org.hibernate.annotations.common.annotationfactory.AnnotationFactory.create(AnnotationFactory.java:46)
    at org.hibernate.cfg.annotations.reflection.JPAOverridenAnnotationReader.buildColumns(JPAOverridenAnnotationReader.java:1383)

Любые идеи о том, как это исправить?


person Lukasz Zuchowski    schedule 09.10.2012    source источник


Ответы (1)


Я настоятельно рекомендую не использовать разные версии Hibernate для вашего приложения.

Я предлагаю вам загрузить hibernate 4.1.3 и другие соответствующие версии, заменить файлы jar и обновить module.xml на правильные файлы jar. Мы используем 7.1.1 с Hibernate 4.1.3 Core и Envers.

Замена Envers module.xml

  <module xmlns="urn:jboss:module:1.1" name="org.hibernate.envers">
    <resources>
      <resource-root path="hibernate-envers-4.1.3.Final.jar"/>
      <!-- Insert resources here -->
    </resources>

  <dependencies>
    <module name="org.hibernate"/>
    <module name="org.jboss.logging"/>
    <module name="org.dom4j"/>
    <module name="javax.api"/>
    <module name="javax.persistence.api"/>
    <module name="javax.transaction.api"/>
    <module name="org.hibernate.commons-annotations"/>
    <module name="org.javassist"/>
   </dependencies>
 </module>

Change also org/hibernate/main/ (we use hibernate core 4.1.3.Final)
Change org/hibernate/validator/main ( we use hibernate validator-4.2.0.Final)
Change org/hibernate/commons-annotations (we use 4.0.1 Final) 

Так и должно быть.. Дайте мне знать, если возникнут какие-либо проблемы с зависимостями..

-Мэдди

person Maddy    schedule 09.10.2012