Обновить Glassfish v2 до JPA 2.0? - PullRequest
       17

Обновить Glassfish v2 до JPA 2.0?

7 голосов
/ 01 октября 2010

Я пытаюсь использовать Hibernate 3.5.5 с Spring HibernateJpaVendorAdapter на Glassfish V2, но я получаю следующее исключение при инициализации контекста Spring:

java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode()Ljavax/persistence/SharedCacheMode;

в org.hibernate.ejb.util.LogHelper.logPersistenceUnitInfo (LogHelper.java:39) в org.hibernate.ejb.Ejb3Configuration.configure (Ejb3Configuration.java:517) в org.hibernate.ejb.HibernatePersistence.createContainerE73.jpg1005 * Проблема в том, что Glassfish V2 использует JPA1.0, который загружается на пути к классам сервера до hibernate-jpa-2.0-api-1.0.0.Final.jar, который поставляется с Hibernate.JPA 1.0 не имеет метода getSharedCacheModel в PersistenceUnitInfo, но JPA 2.0 имеет.

Есть ли способ обновить Glassfish V2 для использования JPA 2.0 (или любого другого решения этой проблемы)?

Приветствия,

J

Ответы [ 4 ]

4 голосов
/ 01 октября 2010

Вы можете попробовать положить банку JPA 2.0 в /domain/lib/endorsed dir

1 голос
/ 04 октября 2010

Спасибо за отзывы, ребята.Поместить jpa jar в / domain / lib / одобрено для меня.

Настройка ...

<sun-web-app error-url="">
    <class-loader delegate="false"/>
</sun-web-app>

... у меня не сработала, хотя это могло быть только потому, что классы являются частью javax.из JPATemplate Spring и непосредственного использования JPA @PersistenceContext EntityManager - это вызвало все виды проблем.Glassfish v2 + Spring + Hibernate не дружат!

0 голосов
/ 31 августа 2012

Glassfish 2.1 не поддерживает JPA 2, я скачал версию JPA 2, вставил ее в каталог $GLASSFISH_HOME/lib/endorsed/ и вставил в commons-loggin1.1.jar, и это работает для меня.

Это выглядит так:

/ glassfish / lib / одобрено $ ls
activation.jar
OpenJPA-все-2.0.1.jar
Обще-каротаж 1.1.jar
webservices-api.jar

http://glassfish.java.net/public/comparing_v2_and_v3.html
http://openjpa.apache.org/downloads.html

0 голосов
/ 01 октября 2010

Насколько мне известно, невозможно обновить базовые библиотеки JPA контейнеров Java EE 5, просто заменив библиотеки и используя управляемый контейнер JPA 2.0 EntityManager.

Однако должна быть возможность использовать реализацию JPA 2.0 с библиотекой API JPA 2.0, предоставляемой на уровне приложений, и использовать управляемое приложение EntityManager JPA 2.0.

Чтобы попробовать второй подход с 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>
...