/ WEB-INF / классы против / WEB-INF / lib - PullRequest
16 голосов
/ 19 января 2011

Я бы хотел упаковать свои Java EE6 веб-классы (бины, фильтры, сервлеты) в jar и поместить его в каталог /WEB-INF/lib/ вместе с другими утилитами jar и полностью отказаться от каталога /WEB-INF/classes/.

Существуют ли существенные различия между ними с точки зрения загрузки классов, доступа к контексту приложения и т. Д.?

Спасибо.

PS: Всякий раз, когда я прибегаю к поиску каких-либо Java-спецификаций, меня всегда перенаправляют на индекс документации Oracle, который находится в дюжине кликов от исходного URL. Кто-нибудь знает, что там происходит?

Ответы [ 3 ]

21 голосов
/ 19 января 2011

Я бы пошел на /WEB-INF/classes.Это позволяет вам запускать ваше приложение в режиме отладки и менять классы горячей замены.Если вы упаковываете все как банку, вам придется перепаковывать и заново развертывать приложение каждый раз, когда вы меняете класс.

15 голосов
/ 19 января 2011

Ну, коротко: представьте, что у вас есть класс org.example.Test.class, если вы поместите его в jar и в каталог WEB-INF/lib/ и скопируете тот же класс в WEB-INF/classes/, тогда загрузчик классов этого приложения будет использовать последний (из * 1004)*).

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

0 голосов
/ 25 сентября 2017

В определении контейнера сервлета Tomcat: WEB-INF\classes ищется раньше WEB-INF\lib.Вы можете делегировать загрузку классов в свой пользовательский загрузчик классов - даже тогда порядок выше сохраняется.

Если вы решите пойти с другим провайдером, например, JBOss, Glassfish, Jetty, он может иметь другой порядок, но яЯ не уверен в этом.

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