2013-10-07 7 views
0

В настоящее время я составляю список сторонних библиотек, используемых в веб-приложении. Приложение развернуто в tomcat. Мне интересно, какие из сторонних банок действительно должны или должны быть включены в дистрибутив. В частности, я сейчас задаюсь вопросом, как наилучшим образом использовать javax-библиотеки. Например, я бы предположил, что javax.annotation-3.1.1.jar можно использовать стандартным образом, например, загружать его как расширение, без меня, включая его в дистрибутив моего собственного программного обеспечения. Однако я включил его как транзитивную зависимость от jaxws-api, которая мне нужна для веб-сервисов, и поэтому она включена в каталог lib приложения. Насколько я понимаю, я мог бы использовать запись манифеста Extension-List, чтобы заставить целевую машину загружать и устанавливать такие банки. Тем не менее, тогда они видны для других приложений на той же машине, которые могут потребовать другие версии тех же библиотек.Перераспределение банок

Итак, у меня есть несколько вопросов по поводу 3-й партии LIBS и я был бы очень рад, если кто-то может дать мне несколько советов:

Что является лучшей практикой для использования сторонних библиотек?

Есть ли какая-то передовая практика для библиотек javax?

Можете ли я избежать перераспределения, не налагая большой нагрузки на человека, устанавливающего приложение?

ответ

0

Должен признаться, я не понял понятие «перераспределение» здесь, возможно, вы используете какую-то конкретную терминологию сервера приложений, поэтому я постараюсь дать общий ответ здесь, предполагая, что у вас есть война ,

WAR (означает Web Archive) должен включать все сторонние приложения, используемые приложением. Они находятся в папке WEB-INF/lib.

Теперь каждый Java EE-сервер должен «понимать» библиотеки javax, поскольку он содержит соответствующие интерфейсы. Библиотеки «javax» обычно предоставляют интерфейсы, а реализация/код, который работает с этими интерфейсами, предоставляется разработчиками сервера приложений.

Например, для технологии сервлетов Tomcat (или имя любого веб-сервера) будет содержать абстрактный класс HttpServlet внутри своих внутренних библиотек, он сканирует вашу войну и находит, где вы ее реализуете/расширяете, вот как она распознает ваши сервлеты на самом деле.

Теперь вы не должны включать в свою войну сервлет-api jar, потому что он уже существует на сервере приложений.

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

Я не понял, почему так сложно установить приложение - в самом простом случае - вы бросаете войну на веб-сервер, и все.

Надеюсь, это поможет

+0

Я действительно использую Maven и в том числе сервлет-api с областью действия «при условии». Кроме того, я могу найти аннотации-api.jar в папке lib Tomcat вместе с несколькими другими банками. Однако это далеко не все библиотеки javax. Например, jaxws-api не входит в эту папку. Установка, кстати, не проблема. Я просто рассматриваю, какие банки я должен упаковать, и какие из них я могу считать присутствующими по причинам лицензирования. – avidD

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

  • Нет связанных вопросов^_^