Вопрос

Я пытаюсь использовать 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top