Websphere 7 EntityManagerFactory проблема создания - PullRequest
1 голос
/ 05 мая 2010

Я работаю над проектом maven, который использует шов 2.2.0, hibernate 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 для своего приложения, чтобы сначала загрузить классы с помощью загрузчика классов приложения, и я упаковал все необходимые фляги в ухо приложения, как написано в: WAS InfoCenter: функции для разработки EJB 3.0 . При необходимости я опубликую свои файлы persistence.xml, component.xml и трассировку стека.

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

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

1 Ответ

4 голосов
/ 06 мая 2010

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

...