Как использовать общие библиотеки для нескольких веб-проектов Java - PullRequest
6 голосов
/ 30 июня 2009

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

Ответы [ 7 ]

8 голосов
/ 30 июня 2009

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

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

3 голосов
/ 30 июня 2009

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

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

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

2 голосов
/ 30 июня 2009

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

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

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

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

1 голос
/ 01 июля 2009

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

0 голосов
/ 19 августа 2009

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

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

0 голосов
/ 30 июня 2009

Я сейчас использую другой подход.

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

Каждый раз обновляется локальная рабочая копия, обновляются внешние, поэтому вам просто нужно зафиксировать центральную папку, и она автоматически распространяется во все проекты.

0 голосов
/ 30 июня 2009

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

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

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