JPA/Eclipselink Нет поставщика сохраняемости EntityManager только на целевом сервере

У меня есть портлет Vaadin 7.3.8, работающий в Liferay 6.2 CE с использованием JPA 2.1 с EclipseLink 2.5.2, разработанным с помощью Maven. Портлет работает, как и ожидалось, без ошибок JPA на моей локальной машине Mac OS X с пакетом Liferay 6.2/Glassfish 3.2, соединителем MySQL 5.6 и MySQL JDBC 5.1.34 и JDK 1.7_71. Я не использую источник данных в Glassfish. Я позволяю EclipseLink обрабатывать пул соединений, поэтому не требуется настройка источника данных на Glassfish.

Целевой средой является CentOS 6.4 с тем же развернутым стеком, который принимает JDK 1.7_72. Когда я развертываю портлет в целевой среде, я получаю ужасное:

javax.persistence.PersistenceException: нет поставщика сохраняемости для EntityManager с именем xxxxxxx

Я проверил CLASSPATH и все, что я знаю, чтобы проверить, основываясь на всех очень информативных сообщениях о JPA на этом форуме. Ничто не решает мою проблему, связанную с запуском этого портлета в целевой среде.

Кто-нибудь сталкивался с такой проблемой? Сбит с толку!


person lifer    schedule 20.01.2015    source источник


Ответы (2)


Glassfish, сервер приложений, на котором работает Liferay, по-прежнему требует доступа к JAR-файлам EclipseLink для использования API.

Убедитесь, что эти три файла находятся в папке /lib/ext/ в вашем домене Glassfish или в пути к классам приложения:

  • постоянство.jar
  • eclipselink.jar
  • mysql-connector.jar
person ibelcomputing    schedule 20.01.2015

Решение найдено. По-видимому, версия Eclipselink в пакетах OSGi Glassfish должна быть такой же, как та, которую вы развертываете в файле WAR. Мне пришлось обновить Glassfish 3.2.2 до Eclipselink 2.5.2, используя следующий подход: http://dimaki.blogspot.com/2014/02/update-glassfish-3122-eclipselink.html

Это напоминание мне прислал хороший друг.

person lifer    schedule 21.01.2015