Обновите Glassfish V2 к JPA 2.0?
-
27-09-2019 - |
Вопрос
Я пытаюсь использовать Hibernate 3.5.5 с Spring HibernatejPavendorAdapter на GlassFish V2, но я получаю следующее исключение, когда инициализируется пружинным контекстом:
java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode()Ljavax/persistence/SharedCacheMode;
ap org.hibernate.ejb.util.loghelper.logpersistenceunitinfo (logheelper.java:39) на org.hibernate.ejb.ejb3configuration.ejb.ejb3configuration.javagure (EJB3Configuration.java: 517) на org.hibernate.ejb.ejb.hibernatePersistence.java : 73)
Проблема заключается в том, что GlassFish V2 использует JPA1.0, который загружен на класс на сервере перед Hibernate-JPA-2.0-API-1.0.0.final.jar, который корабли с гибернатом. У JPA 1.0 не имеет метода GetSharedCachemodel в Persistenceunitinfo, но JPA 2.0 делает.
Есть ли способ модернизации GlassFish V2, чтобы использовать JPA 2.0 (или любое другое решение этой проблемы)?
Ваше здоровье,
J
Решение
Вы можете попробовать положить JPA 2.0 банку в /domain/lib/endorsed
дир
Другие советы
Спасибо за отзывы ребята. Положить JPA JAR в / домен / lib / одобрен для меня.
Параметр...
<sun-web-app error-url="">
<class-loader delegate="false"/>
</sun-web-app>
... не работал для меня, хотя это могло быть, потому что классы являются частью Javax.
Я также попытался раздавать jpatemplate jpatemplate и использовать Entitymanager jpa @persistenceContext - это вызвало всевозможные проблемы. Glassfish V2 + Spring + Hibernate не друзья!
Насколько мне известно, невозможно обновить библиотеки Java ee 5 контейнеров Core JPA, просто заменяя библиотеки и использовать Управляемая контейнер JPA 2.0 EntityManager.
Однако должно быть возможность использовать реализацию JPA 2.0 с помощью библиотеки API JPA 2.0, предоставленной на уровне приложения и использовать Управляемое приложение JPA 2.0 EntityManager.
Чтобы попробовать второй подход с Glassfish V2, вам нужно будет отключить делегацию классов классов (так что библиотеки приложений будут использоваться первой). Это может быть настроено в sun-web.xml
что вы упаковывали под WEB-INF
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN"
"http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd">
<sun-web-app error-url="">
<class-loader delegate="false"/>
</sun-web-app>
Glassfish 2.1 Не поддерживает JPA 2, я загрузил версию JPA 2 и вставил в $GLASSFISH_HOME/lib/endorsed/
Справочник, и вставляется в Commons-loggin1.1.jar, и это работает для меня.
Похоже, это выглядит:
/ glassfish / lib / estorsed $ ls
Activation.jar.
OpenJPA-All-2.0.1.jar
Commons-logging-1.1.jar
WebServices-API.jar.
http://glassfish.java.net/public/comparing_v2_and_v3.html.
http://openjpa.apache.org/downloads.html.