Обновите версию Hibernate в JBOSS - PullRequest
       33

Обновите версию Hibernate в JBOSS

5 голосов
/ 02 сентября 2011

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

Затем я сделал развертывание «ограниченным», включив в EAR файл jboss-app.xml, содержащий следующее:

<jboss-app>
  <loader-repository> 
  com.example:archive=unique-archive-name 
     <loader-repository-config> 
     java2ParentDelegation=false 
     </loader-repository-config> 
  </loader-repository>
</jboss-app>

И, как обычно, я объявляю моего провайдера персистентности в модуле персистентности Hibernate следующим образом:

<persistence>
   <persistence-unit name="myapp">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
   ...

Но тогда случается худшее. При развертывании сервер генерирует исключение ClassCastException при попытке привести из org.hibernate.ejb.HibernatePersistence к интерфейсу JPA javax.persistence.spi.PersistenceProvider (что подразумевается HibernatePersistence ).

Это своего рода странно, потому что я отправляю API JPA также в моем EAR, поэтому, учитывая, что классы EAR имеют приоритет над классами JBoss, у него не должно возникнуть проблем при приведении из HibernatePersistence к PersistenceProvider, так как они "должны быть" в одном загрузчике классов.

Если я не отправляю свой собственный API JPA, то развертывание завершается ошибкой с ClassNotFoundException, когда JBoss пытается найти какой-либо класс JPA.

Есть идеи, почему этот кастинг не удался?

Я использую JBoss 5.1.0 и пытаюсь использовать Hibernate 3.5.6.Final. Версия API JPA является транзитивно импортированной упомянутой версией Hibernate.

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

Вы можете попробовать включить обзор классов через средство развертывания уха. Для JBoss 5.x изменить:

JBoss / сервер / [Конфигурация] /deployers/ear-deployer-jboss-beans.xml

и изменить:

   <bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">
      <property name="isolated">false</property>
   </bean>

настройка изолирована на true.

1 голос
/ 24 ноября 2011

Чтобы решить проблемы с загрузкой классов в hibernate на сервере jboss, вам необходимо добавить jboss-classloading.xml в папку WEB-INF вашего веб-приложения. Подробнее об этих настройках конфигурации здесь .

<classloading xmlns="urn:jboss:classloading:1.0"
domain="pentaho.ear"
export-all="NON_EMPTY"
import-all="true"
parent-first="false">
</classloading>
1 голос
/ 02 сентября 2011

Вы также включили hibernate-entitymanager.jar?

В противном случае вы можете попробовать заменить jar ядра hibernate в Common / lib на версию 3.5.6.

...