Mam trudny czas, próbując wysyłać wewnątrz mojego EAR moją własną wersję Hibernate (a nie tą, którą JBoss domyślnie przynosi).Uaktualnienie wersji Hibernate w JBOSS
Potem zrobiłem mój rozmieszczenia „scoped” poprzez włączenie do EAR plik JBoss-app.xml zawierającą następujące:
<jboss-app>
<loader-repository>
com.example:archive=unique-archive-name
<loader-repository-config>
java2ParentDelegation=false
</loader-repository-config>
</loader-repository>
</jboss-app>
i, jak zwykle, oświadczam mój provider wytrwałość w urządzeniu do utrwalania być w stanie hibernacji, jak następuje:
<persistence>
<persistence-unit name="myapp">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
...
Ale wtedy dzieje się najgorsze. Podczas wdrażania serwer generuje wyjątek ClassCastException, gdy próbuje rzutować z org.hibernate.ejb.HibernatePersistence na interfejs JPA javax.persistence.spi.PersistenceProvider (który jest implikowany przez HibernatePersistence).
To jest trochę WIRTUALNY, ponieważ wysyłam API JPA również w moim pliku EAR, więc, biorąc pod uwagę, że klasy EAR mają pierwszeństwo dla klas JBoss, nie powinien mieć problemu z przesyłaniem z HibernatePersistence do PersistenceProvider, ponieważ powinny "należeć" do tego samego programu ładującego klasy.
Jeśli nie wysyłam własnego interfejsu API JPA, wdrożenie nie powiedzie się z wyjątkiem ClassNotFoundException, gdy JBoss próbuje znaleźć trochę klasy JPA.
Każdy pomysł na to, dlaczego ten casting zawodzi?
Używam JBoss 5.1.0 i próbuję użyć Hibernate 3.5.6.Final. Wersja interfejsu API JPA jest tą, która została zaimportowana przechodnio przez menstruowaną wersję Hibernate.
Dzięki. Tak, wysyłane są zarówno sterowniki hibernacji-core, jak i hibernacji. Aby umieścić słoik hibernacji w common/lib nie jest opcją, Hibernate powinien zostać dostarczony (i powinno być możliwe ...). – edutesoy