2011-01-05 15 views
1

Когда я запускаю JBoss 6, я вижу, что он распаковывает все файлы jar из WEB-INF/lib в папку tmp/vfs/automountXXX. Например. Jackrabbit-server.war содержит библиотеку ASM-3.1.jar, затем в папку TMP я вижу следующие папки с файлами:JBoss 6 распаковывает банки из WEB-INF/lib of war

asm-3.1.jar-83dc35ead0d41d41/asm-3.1.jar 
asm-3.1.jar-2a48f1c13ec7f25d/contents/"unpacked asm-3.1.jar" 

он не принимает файлы из my.ear/Lib только WEB-INF/Lib. .. Почему это так? И есть ли способ предотвратить это? Он просто замедляет запуск сервера приложений (и останавливается), что не так удобно при разработке ... btw. переупаковывая войну в структуру уха таким образом, дал мне одно и то же рабочее приложение и сэкономил 1 минуту, пока сервер приложений запустился ... 1 минута достаточно хороша ... Надеюсь, что есть более простой способ: переупаковка в режиме разработки.

Если это как-то связано с JavaEE 6 спецификации и EJB-банки, которые могут находиться в настоящее время в WEB-INF/Lib, поэтому у меня нет таких библиотек в моих военных файлов ...

UPDATE: на самом деле, когда я переупаковываю jackrabbit-server.war на jackrabbit-server.ear, который содержит jackrabbit-server.war, и переместил все его библиотеки на jackrabbit-server.ear/lib, тогда я все еще вижу две папки в tmp:

asm-3.1.jar-215a36131ebb088e/asm-3.1.jar 
asm-3.1.jar-14695f157664f00/contents/ 

но в этом случае последняя папка пуста. Таким образом, он по-прежнему создает две папки, но не распаковывает мою библиотеку. Также я использую exploded deployment, поэтому вопрос касается только файлов jar, а не распаковки уха/войны.

ответ

0

Согласно discussion на форуме JBoss AS это может быть ошибка. И не существует обходного пути, чтобы исправить/избежать/настроить его сейчас.

Единственная идея, которую я получил, - это переупаковать мои приложения: внутри EAR я переместил библиотеки из WEB-INF \ lib из WAR в EAR \ lib (в WAR остались только struts, иначе это не сработает), а другое WAR, которое я сделал как EAR и все его библиотеки, которые я мог бы переместить в EAR \ lib. В режиме разработки я могу легко использовать эту структуру, и это экономит мне 2 + минуты для загрузки сервера приложений, и это очень много ... Теперь JBoss занимает 1:50 минут, по сравнению с 4 минутами до ...

1

Он также будет распаковывать EAR, просто не там же. Вам нужно будет охотиться, чтобы найти, где они распакованы, но они есть.

Это для служебные условия. Если бы это не так, то загрузка классов была бы очень медленной, так как она должна была бы перезаписывать через вложенные файлы ZIP, ища то, что ей нужно.

Таким образом, вы можете почувствовать, что распаковка замедляет вас, но на самом деле это ускоряет работу.

+0

Ну, я вижу причину для распаковки, но я спрашиваю о режиме разработки. Это не производство, поэтому мне нужно, чтобы сервер стал быстрым, и в этом случае я не чувствую себя медленной загрузкой. Было бы неплохо получить опцию в конфигурации сервера :) Для производства -> Я полностью согласен с вами, но для меня нет ничего странного: почему только библиотеки из WEB-INF/lib распакованы, почему сервер «игнорирует» папку ear/lib то (просто расширил мой вопрос с помощью этой информации)? – Maxym

+0

@Maxym: медленная загрузка класса ощущается только во время запуска, поэтому она влияет на dev * больше *, чем на производство. Когда классы загружаются, замедление останавливается. – skaffman

Смежные вопросы