2009-06-30 6 views
6

У меня есть четыре разных проекта, и я использую Weblogic для развертывания моих проектов. Существует несколько библиотек (jar-файлов), которые являются общими для всех проектов. В настоящее время каждый из моих проектов имеет каталог lib и имеет почти тот же набор библиотек. Теперь, возможно ли иметь этот каталог lib вне WAR-файлов и получить к ним доступ.Как использовать общие библиотеки для нескольких веб-проектов Java

ответ

8

Не поддавайтесь искушению помещать файлы jar в общую папку вашего контейнера. Лучше хранить файлы jar там, где они есть. Может показаться хорошей идеей использовать общую папку сейчас, но в будущем вам может понадобиться развернуть приложение, для которого требуется общая библиотека, но другая версия.

Это, как говорится, у меня нет опыта работы с WebLogic. В Tomcat есть общая папка с библиотеками, распространенными для всех развернутых приложений. Не рекомендуется использовать это. Если WebLogic может быть настроен на использование общей папки для набора приложений (а не для всех развернутых приложений), вы можете пойти на это.

+1

Хороший совет! Слишком мало накладных расходов при наличии дополнительной копии файла jar, тогда как необходимость вымачивать две версии общей библиотеки из одного и того же места или заставлять все ваши приложения обновляться до новой версии в тот же момент - настоящая боль , –

+0

Фактически после компиляции размер проекта составляет около 1,5 мб (без libs) и 20 мб (с помощью libs) –

+0

Вы можете использовать общую папку на своей машине разработки, чтобы ускорить развертывание. В производственной среде это не имеет большого значения, поэтому предпочитайте большой файл WAR со всеми банками внутри. Если вы это сделаете, вам нужно провести тестирование дважды (как для большой, так и для большой войны). – kgiannakakis

0

Ну, в первую очередь, вы можете разместить свои библиотеки на одном и том же месте и импортировать необходимые вам процессы сборки.

Для развертывания новый Weblogic 10 имеет папку lib в каждом домене, где вы можете поместить общие библиотеки. Я не думаю, что это возможно до Weblogic 10

+1

Существует поддержка общей библиотеки в версии 9: http://e-docs.bea.com/wls/docs92/programming/libraries.html – McDowell

-1

В настоящее время я использую другой подход.

  1. Создайте папку центрального репозитория и разместите там все распространенные библиотеки.
  2. В каждом проекте вы можете создать ссылку на все необходимые библиотеки. В Subversion работает с externals

Everytime, локальная рабочая копия обновляется, внешнеположенности обновляют, так что вам просто необходимо совершить в центральную папку и он автоматически распространяется на все проекты.

3

Вы хотите сделать это? Если вы не застряли в пространстве развертывания, я бы (может быть) посоветовал бы ему.

Почему? На данный момент у вас есть 4 решения, запускающие эти библиотеки. Если вам необходимо обновить одну из библиотек (скажем, если вы обнаружите ошибку или вам нужна новая функция), вам придется протестировать совместимость и функциональность для всех 4 решений. Если каждое решение имеет свой собственный набор libs, то они изолированы, и вам не нужно перемещать все 4 в шаге.

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

2

Не делайте этого.

Вся идея файлов WAR заключается в том, что они являются автономными устройствами. Это упрощает развертывание.

В дополнение к возможным конфликтам в версии, которые другие указали, размещение файлов jar в/shared может иметь очень вложенные последствия для видимости класса. Они будут находиться на отдельном загрузчике классов и не смогут видеть классы в файле WAR. Если вы используете библиотеки, которые полагаются на Class.forName() для работы (и их много), это может стать очень болезненным.

Если вы действительно не можете позволить себе дополнительное пространство на диске и память, посмотрите на OSGi или Spring DM.Они решили эту проблему, но ценой повышенной сложности.

1

Поместите все общие файлы jar в общую папку \ lib weblogic. common \ lib доступен для всех развернутых приложений.

0

Вы можете поместить банки в свой собственный файл уха и развернуть его как общую библиотеку.

Вы также можете поместить войны в ухо и добавить общие банки в APP-INF/lib. Это расширение Weblogic J2EE, поэтому оно не будет работать на других серверах.

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