Наилучшая практика для загрузки сторонних JAR-файлов в автономное развертывание JBoss AS7? - PullRequest
26 голосов
/ 28 ноября 2011

Каков наилучший метод для загрузки сторонних JAR-файлов в автономном развертывании JBoss-as-7.0.x?

Я пробовал:

  1. развертывание каждого JAR-файла как независимого модуля с собственным дескриптором module.xml;
  2. развертывание JAR-файлов в каталоге WEB-INF / lib WAR;
  3. и каталог foo.ear / lib для любых файлов JAR, совместно используемых несколькими WAR.

Очевидным преимуществом подхода 1, описанного выше, является сокращение занимаемой памяти во время развертывания по сравнению с подходом 2. и подходом 3. Однако, по-видимому, довольно трудно поддерживать, поскольку каждую зависимость, которую имеет JAR, необходимо явно определить в module.xml, который кажется не очень удобным для большого количества сторонних библиотек.

1 Ответ

16 голосов
/ 31 июля 2012

Для небольших зависимостей, которые являются частными для развертывания, оставьте их в WEB-INF/lib в вашем .war, вот для чего оно. Если вы используете Maven, это должно быть в значительной степени автоматически и прозрачно для всего, что находится в области действия .

Для больших, сложных зависимостей или зависимостей, которые будут совместно использоваться несколькими приложениями, используйте параметр (4):

Разверните каждую логическую библиотеку (например, «OpenJPA» или «Log4J») в виде модуля, включая ее jar-файлы api и impl и любые JAR-зависимости, которые еще не предоставлены другими модулями AS7. Если модуль уже существует, добавьте в него зависимость, а не JAR-файл. Если несколько разных библиотек имеют общие зависимости, разделите их на модули и добавьте их как зависимости модуля в module.xml.

Используйте jboss-deploy-structure.xml , чтобы ваше развертывание .war / .ear / независимо от того, объявляло ли оно зависимость от модуля, если он не обнаружен и не загружен автоматически.

Я считаю, что это подход от средних до низких, который хорошо работает. Это более хлопотно, чем помещать все в WEB-INF/lib внутри развертывания, что является стандартным делом Java EE. Это ускоряет повторное развертывание и экономит много времени на развертывание / тестирование, уменьшая конфликты между классами и версиями.

Вы можете использовать Maven и плагин maven-dependency-plugin для создания модулей с уже включенными переходными зависимостями, если вы хотите немного поработать. Вы можете увидеть один пример этого в модуле , который я написал для интеграции EclipseLink в AS 7 . Я автоматизирую создание модулей AS7 всякий раз, когда это возможно.

...