Две папки Meta-Inf - нормальная структура?

Я только что «обнаружил», что у нас есть две папки Meta-Inf ... В eclipse, а также в файле War.

Первый (на войне):

/МЕТА-ИНФ/

Второй и странный:

/WEB-INF/классы/META-INF/

Во второй папке есть файл persistence.xml и something.taglib.xml...

Если я перемещаю файлы в первую папку meta-inf, я получаю исключения из спящего режима.

Какова цель этой второй и странно расположенной папки с метаинформацией?

Это нормальная структура папок?


person Nick Russler    schedule 05.11.2012    source источник


Ответы (1)


Место «странное» верное; JSR-220/JSR-317 (Java Persistence API 1.0/2.0) в разделе 6.2/8.2 говорит:

Файл jar или каталог, каталог META-INF которого содержит файл persistence.xml, называется корнем модуля сохранения. В Java EE корнем единицы сохраняемости может быть одно из следующих:

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

*) Действительно только для JPA 1.0

Таким образом, непосредственно в файле WAR единственным правильным расположением является WEB-INF/classes/META-INF/.

person MaDa    schedule 05.11.2012
comment
Так должен ли я взять содержимое «неправильного» (оно содержит только файл MANIFEST.MF) и вставить его в «правильный»? (А затем удалите неправильно размещенный META-INF) - person Nick Russler; 06.11.2012
comment
Нет, корневой META-INF не является неправильным сам по себе — он просто не предназначен для хранения файла persistence.xml. META-INF/MANIFEST.MF — это дескриптор архива jar/war/ear. Этот файл — единственное, что отличает формат jar/war/ear от обычного zip-файла. - person MaDa; 06.11.2012
comment
Так что это «нормально» или даже необходимо иметь два META-INF? - person Nick Russler; 06.11.2012
comment
Это конечно нормально - нужно ли, не уверен. Это просто папка, в которую инструмент jar помещает свои метаданные, другие инструменты (например, Maven) также иногда используют его. - person MaDa; 07.11.2012