Websphere 7 и (на основе приложений) Open-JPA 2 - PullRequest
5 голосов
/ 25 августа 2011

Я не хочу использовать встроенный плагин Websphere 7 jpa, вместо этого используйте приложение WEB-INF / lib / open-jpa 2 и проприетарный поставщик сохраняемости. Я не могу установить пакет функций OSGI и JPA 2 для Websphere.

Первоначально я получал ошибку синтаксического анализа, просто пытаясь загрузить файл persistence.xml (version = "2" не поддерживается). Ошибка была сгенерирована классом в open-jpa 1.2.3. Когда я запускаю websphere / appserver / bin / wsjpaversion.bat, отображается jar open-jpa 1.2.3. По умолчанию он переопределяет jar-файл open-jpa 2 в приложении. Я создал разделяемую библиотеку, содержащую jar open-jpa 2, с опцией этой конфигурации: «Использовать изолированный загрузчик классов для этой разделяемой библиотеки». Я установил свой загрузчик классов приложения для последней загрузки родителя и назначил ему новый ресурс общей библиотеки. Ошибка версии 2 исчезла, но есть другая проблема. Когда я пытаюсь инициализировать EntityManager, я получаю сообщение об ошибке:

Caused by: javax.persistence.PersistenceException: Failed to load provider from META-INF/services
    at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:121)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:91)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    ... 2 more
Caused by: java.lang.ClassCastException: com.ibm.websphere.persistence.PersistenceProviderImpl incompatible with javax.persistence.spi.PersistenceProvider
    at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:110)
    ... 11 more

Еще одна деталь: внутри файла persistence.xml для элемента provider установлено проприетарное значение PersistenceProviderImpl, а не поставщик постоянных данных Websphere по умолчанию. Итак, откуда взялся этот дефолт веб-сферы и как его предотвратить? (еще одно важное замечание: когда я полностью удаляю persistence.xml, я получаю ту же ошибку )

Спасибо

1 Ответ

4 голосов
/ 12 сентября 2011

Без установки пакета функций вы ведете проигранную битву.В то время как есть возможность подключить вашу собственную реализацию JPA , это невозможно сделать с помощью JPA API - поэтому WAS 7 связывает вас с версией JPA 1.0 (см.Например, здесь как это сделать - никакое жонглирование политикой загрузчика классов не изменит это, хотя поначалу это кажется заманчивым).

...