Как создать два веб-приложения java и совместить файлы jar-зависимостей и другие файлы? - PullRequest
3 голосов
/ 19 мая 2010

В настоящее время у нас есть веб-приложение для веб-сервисов (с именем ws-project). Он использует 2 других проекта:

  • dao-проект (спящий режим)
  • core-project (pojo)

ws-project (war)  
 |   
 +--dao-project (jar)   
 +--core-project (jar)   

Мы используем рамки maven и spring. (& затмение)

Мы хотели бы иметь второй веб-проект, отображающий веб-страницы с использованием spring-mvc (& jsp)

web-project (war)   
 |  
 +--dao-project (jar)  
 +--core-project (jar)  

Проблема в том, что у нас будет 2 веб-приложения. И после развертывания каждое веб-приложение будет содержать в / lib 2 файла jar (dao-project.jar & core-project.jar). Каждый из них будет иметь свой собственный источник данных и пружинный контейнер.

Итак, мы думаем, что, как обычно, делаем одно веб-приложение, смешивающее веб-сервисы и веб-страницы.

Есть ли какое-либо решение, чтобы получить чистое разделение без этих недостатков?

Заранее спасибо за помощь, я ценю, действительно.

Ответы [ 2 ]

3 голосов
/ 19 мая 2010

К сожалению, J2EE не определяет опцию развертывания (кроме объединения нескольких войн в EAR), которую вы описали, оставляя это на серверах приложений. Однако большинство серверов приложений предоставляют какие-то механизмы для совместного использования общих библиотек. Например, в Tomcat вам придется скопировать эти библиотеки в нечто вроде $ CATALINA_BASE / shared / lib, но тогда они будут видны всем приложениям.

2 голосов
/ 19 мая 2010

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

Рано или поздно вам придется исправлять ошибки в одном веб-приложении, и некоторые из этих ошибок могут потребовать обновления библиотеки JAR. Если вы используете одну и ту же библиотеку JAR, вы будете вынуждены обновить неразрушенное веб-приложение и развернуть оба одновременно. Такие взаимозависимости в конечном итоге делают развертывание очень трудным (если не невозможным), поэтому вы можете пересмотреть привязку обоих веб-приложений к одному и тому же файлу JAR.

Если вы все еще хотите связать оба веб-приложения одинаковыми файлами JAR, в TOMCAT вы поместите файлы JAR в каталог TOMCAT / lib (не в каталог webapp / lib), что сделает его доступным для всех веб-приложений (даже те, которые не используют библиотеку). Я полагаю, что местоположение для Tomcat - $ CATALINA_HOME / common / lib. Взгляните на документацию загрузчика классов Tomcat , обращая внимание на "общие" разделы.

Я знаю, что расточительно не использовать библиотеки повторно, но их повторное использование может создать много проблем. Например, вы уверены, что библиотека написана для одновременного использования несколькими приложениями? Некоторые библиотеки, которые используют файлы конфигурации, хранящиеся на диске, или определенные типы шаблонов Singleton, могут пропускать информацию между веб-приложениями. Помните, что в веб-приложении обычно не работает несколько JVM, все веб-приложения работают под одной и той же JVM.

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