Нужно ли повторять общие JAR через WAR-ы в EAR? - PullRequest
6 голосов
/ 16 января 2009

У меня есть JAR-файл для авторизации. Мне нужно это для каждого из моих файлов WAR. Все файлы WAR упакованы в файл EAR. Нужно ли повторять этот общий JAR в каждой WAR или есть структура для общих библиотек?

Так что мой пример выглядит примерно так ...

big.ear
  - META-INF
    - MANIFEST.MF
    - application.xml
  - appl1.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique1.jar
        - unique2.jar
        - unique3.jar
        - common1.jar
    - jsps/html/etc
  - appl2.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique3.jar
        - unique4.jar
        - common1.jar
    - jsps/html/etc
  - appl3.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique5.jar
        - common1.jar
    - jsps/html/etc

Каждое из моих WAR-приложений может видеть common1.jar, но оно находится в EAR три раза.

Где в структуре EAR можно разместить common1.jar, чтобы appl1, appl2 и appl3 могли видеть его, не повторяя его три раза?

Ответы [ 3 ]

6 голосов
/ 16 января 2009

Стандартный способ - поместить JAR-файлы в корень вашего EAR и ссылаться на них в атрибуте Class-Path WAR-ов META-INF/MANIFEST.MF. См. эту статью .

Проверьте документацию вашего контейнера, чтобы убедиться, что он поддерживается.

1 голос
/ 12 декабря 2012

Это в спецификации JEE5, глава EE 8.2.1:

Файл .ear может содержать каталог, содержащий упакованные библиотеки в файлах JAR. Элемент library-directory файла .ear дескриптор развертывания содержит имя этого каталога. Если элемент library-directory не указан, или если файл .ear не содержит дескриптор развертывания, каталог с именем lib является б.

0 голосов
/ 16 января 2009

На вашем сервере приложений должна быть папка наподобие shared / lib, в которую вы можете поместить файлы jar, которые могут совместно использоваться несколькими веб-приложениями в одном экземпляре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...