Persistence.xml, где поместить в проект Eclipse - PullRequest
11 голосов
/ 06 июня 2011

Простой вопрос ...
У меня есть несколько проектов в среде Eclipse
MainApp (Enterprise Application Project), который «включает»

  1. WebController (EJB Project)
  2. WebModel (проект JPA)
  3. WebView (динамический веб-проект)


Проблема в том, куда поместить файл persistance.xml?

Получение исключения: java.lang.IllegalStateException: невозможно получить EntityManagerFactory для unitName DataModel

Ответы [ 2 ]

14 голосов
/ 07 июня 2011

В спецификации JPA 2.0 в разделе 8.2 изложены требования к упаковке. Это говорит

Персистентная единица определяется файл persistence.xml. Jar файл или каталог, чей каталог META-INF содержит файл persistence.xml называется корнем настойчивости блок.

В средах Java EE корень единица сохранения должна быть одним из следующее:

  • файл EJB-JAR
  • каталог WEB-INF / classes файла WAR [80]
  • файл jar в каталоге WEB-INF / lib файла WAR
  • файл jar в каталоге библиотеки EAR
  • файл jar клиента приложения

Не требуется, чтобы EJB-JAR или WAR-файл, содержащий единицу сохранения быть упакованным в EAR, если единица постоянства содержит постоянство классы в дополнение к тем, которые содержатся в пределах EJB-JAR или WAR. Смотрите раздел 8.2.1.6.

Вы можете прочитать оставшуюся часть главы, если сочтете это необходимым. В Eclipse это означает, что вам нужно настроить зависимости между вашими проектами, чтобы обеспечить правильную упаковку файлов развертывания. Обычно это настраивается в Project-> Properties-> Build Path на вкладке Projects.

Однако я не уверен, что Eclipse упаковывает его так, как требуется для развертывания веб-сервера. Я знаю, что это происходит в проекте EAR.

13 голосов
/ 07 июня 2011

Файл persistence.xml обычно присутствует в каталоге src/META-INF проекта постоянства (JPA).Если проект был создан с Eclipse, он обычно создается и размещается там по умолчанию.

...