Websphere 7 Проблема создания EntityManagerFactory

Я работаю над проектом maven, который использует шов 2.2.0, спящий режим 3.5.0-CR-2 в качестве поставщика JPA, DB2 в качестве сервера базы данных и Websphere 7 в качестве сервера приложений. Теперь я столкнулся со следующей проблемой:

  • В моих EJB, которые также видны как компоненты SEAM, я хочу использовать EntityManager из контейнера EJB (@PersistenceContext private EntityManager em), а не EntityManager Seam (@In private EntityManager em). Но в этом проблема, я не могу получить EntityManager с помощью @PersistenceContext.

В журналах сервера говорится, что он не может создать EntityManagerFactory и получает ClassCastException:

java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence несовместим с javax.persistence.spi.PersistenceProvider

После долгих отладок и поиска на форумах я предполагаю, что проблема в том, что Websphere не использует поставщика Hibernate JPA.

Кто-нибудь сталкивался с этой проблемой и имеет решение? Я уже настроил порядок загрузчика классов WAS для своего приложения, чтобы сначала загружать классы с помощью загрузчика классов приложения, и я упаковал все необходимые файлы jar в ухо приложения, как написано в: Информационный центр WAS: функции для EJB 3.0 разработка. При необходимости я опубликую свои файлы persistence.xml, component.xml и трассировку стека.

Я нашел, что эта проблема обсуждалась также здесь:

Любая подсказка будет полезна.
Заранее спасибо!
Михаэла


person mihaela    schedule 05.05.2010    source источник


Ответы (1)


Я подозреваю, что вы включили JPA API в свой EAR. При использовании «родительский последний» (также известный как «загрузить классы с помощью загрузчика классов приложения первым») ваше приложение загружает вторую копию класса javax.persistence.spi.PersistenceProvider, которая несовместима с копией, включенной в WAS. Вам нужно либо удалить эти классы из вашего EAR, либо вернуться к режиму делегирования «сначала родитель».

person Brett Kail    schedule 05.05.2010
comment
Спасибо за подсказку. Действительно, я включил JPA API в свой EAR. Это еще не решило мою проблему (во всяком случае, у меня есть еще одно исключение), но я должен сначала просмотреть банки, необходимые для Hibernate, и правильную область. - person mihaela; 06.05.2010
comment
Ну, я не могу помочь решить вашу проблему, если вы не опишете ее :-). Возможно, проголосуйте и обновите описание проблемы или примите и задайте новый вопрос? - person Brett Kail; 06.05.2010
comment
Я все еще пробую некоторые сценарии, и только после этого я могу вернуться с более четким описанием. - person mihaela; 06.05.2010