JBoss - Зависимости библиотеки войны - PullRequest
2 голосов
/ 01 июля 2011

Я пытаюсь добавить некоторые зависимости jar-файлов. Но эти файлы при вводе lib/endorsed или WEB_INF/lib.jar приводят к ошибке запуска для экземпляров jboss. Я полагаю, это происходит из-за плоской структуры загрузчика классов JBoss. Если кто-то реализовал настройки загрузчика классов в jboss-web.xml

<class-loading> 
      <loader-repository>com.example:archive=unique-archive-name</loader-repository> 
</class-loading>

Может ли кто-нибудь привести пример из жизни?

Также, где я должен разместить эти файлы jar - lib/endorsed из jboss или lib в папке развертывания или в WEB_INF/lib

Ответы [ 2 ]

5 голосов
/ 03 июля 2011

Директива Даффимо о том, чтобы не ставить банки в одобрено , игнорируется на ваш страх и риск.

В некоторых дополнительных деталях:

Размещение библиотек в вашем WEB-INF / lib - это лучшая практика для переносимости и согласованности, поскольку она соответствует стандартному положению по созданию самодостаточных и распространяемых веб-архивов, но вам необходимо обратить пристальное внимание на класс .loading объявление, которое вы помещаете в jboss-web.xml .

Предположим, что простой сценарий без загрузка классов объявление и вымышленный example.jar :

  • Если вы поместите example.jar в WEB-INF / lib и он не также существует в jboss // lib , тогда example.jar будет виден только этому конкретномуWAR.
  • Если вы поместите example.jar в WEB-INF / lib и , это делает Так как он существует в jboss // lib , экземпляр в WEB-INF / lib будет по существу игнорироваться, и WAR будет использовать загрузчик унифицированного класса экземпляра сервера JBoss для загрузки пример классы из jboss // lib / example.jar .(То же самое применимо к любым другим WAR-файлам или EAR-файлам в том же экземпляре сервера, при условии, что class-loading переопределений не будет.)

class-loading объявление необходимо в тех случаях (например, когда), когда у вас есть две разные версии example.jar : - jboss // lib: example1.0.jar - WEB-INF / lib: example2.0.jar

В этом случае JBoss создаст уникальный и изолированный загрузчик классов для вашей WAR, который будет избегать jboss // lib / example1.0.jar в пользу WEB-INF / lib/example2.0.jar в контексте вашей WAR.

В итоге, если вы запускаете только одну WAR в экземпляре сервера jboss и / или у вас нет конфликтующих проблем JAR, откажитесь от class-loading объявление и поместите ваши JAR-файлы в jboss // lib .Это делает файл WAR более легким, в целом развертывание может быть проще, и вы не будете использовать дополнительную память с версиями дополнительного класса во время горячего развертывания.

2 голосов
/ 01 июля 2011

Они находятся в каталоге WEB-INF / lib вашего WAR-файла. Не кладите вещи в одобренную папку.

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