Как развернуть простые проекты Java в EAR?
Я использую MyEclipse и использую EAP, который автоматически развертывает мои Web и EJB проекты.
Эти проекты используют некоторые другие проекты, которые являются просто POJO, "простыми" Java-проектами. Как в библиотеке.
Проблема в том, что когда я что-то изменяю в "простых" Java-проектах, мне приходится заново развертывать весь EAP в моем JBoss, чтобы увидеть изменения.
Мне нужен способ автоматического развертывания этих проектов (POJO) в EAP, поэтому горячая замена кода работает и с ними.
Есть идеи?
7 ответов
С JBoss вы можете просто бросить свои JAR-файлы в server/default/deploy
каталог - это было, по крайней мере, верно для старых версий - благодаря специальному загрузчику классов JBoss (ненавидь или люби его).
С WebLogic вы можете использовать " Общие библиотеки".
В обоих случаях упомянутые функции являются проприетарными, то есть нестандартными, и их использование сделает ваше приложение не переносимым.
Извините, я имел в виду автоматически. Например: 1) Запущенный сервер. 2) Что-то изменить в Java-проекте (библиотеке). 3) О-о, мне нужно вручную повторно развернуть библиотеку (сделать jar, скопировать и перезапустить сервер). Я хочу, чтобы он вносил изменения автоматически, как в случае с горячим развертыванием.
Аааа, хорошо, понял это сейчас. В этом случае "Развертывание развернутого архива" является подходящим способом и поддерживается MyEclipse (и JBoss). Цитирование 7.1 Режимы развертывания проекта J2EE:
MyEclipse может развертывать проекты Web, EJB и Enterprise Application на любом сервере приложений с поддержкой MyEclipse. MyEclipse поддерживает два режима упаковки развертывания: развертывание архивного пакета и развертывание упакованного архива.
- Развернутое развертывание архива - это ориентированная на разработку, но нестандартная модель упаковки и развертывания приложений J2EE. Подобно пакетному развертыванию, развертываемые ресурсы приложения организованы так, чтобы соответствовать стандартной структуре каталогов / файлов J2EE. Но вместо того, чтобы создавать и развертывать один архивированный файл, вся структура ресурсов приложения - каталоги и файлы - копируется соединителем сервера приложений в специальное расположение сервера для развернутых архивов. Служба развертывания MyEclipse, использующая технологию "Sync-on-Demand", будет синхронизировать все развертывания проекта MyEclipse со всеми исходными изменениями в соответствующем проекте MyEclipse. Примечание: развернутое развертывание не поддерживается стандартом J2EE и поддерживается не всеми серверами приложений.
Можете ли вы развернуть взорванное EAR, а затем просто скопировать несколько файлов, которые вы изменили? Вот как я делаю все свое развитие. Если вы измените простой класс JSP или Java, вы можете просто скопировать эти отдельные файлы, и сервер их заберет.
Попробуйте разделить элементы POJO и J2EE на 2 отдельных EAR или WAR и EAR и разверните их отдельно. У меня та же проблема с проектом Weblogic, и я всегда развернул EJB и весь персонал, если я что-то изменил. Эта идея пришла ко мне не так давно. Нет времени, чтобы попробовать, и эти проекты завершены. Но вы можете использовать мою идею.
Существует коммерческий инструмент для этого, который называется JRebel: http://www.zeroturnaround.com/jrebel хотя я не уверен, будет ли он работать в вашем конкретном случае. Существует 30-дневная пробная версия для тестирования.
Поскольку я использую MyEclipse, я нашел способ сделать это, добавив ссылку в EAP к модулям Java. При развертывании проекта Java-модули развертываются в AS.
Плохо только то, что теперь мне нужно вручную управлять application.xml.
Это все объясняется в этой ссылке.
Могут быть способы сделать это для конкретного сервера, чтобы предоставить общие библиотеки для приложений Java EE, но я не думаю, что спецификация Java EE содержит такую возможность. Один из способов - добавить его в путь к классам серверов, но, как правило, этого следует избегать и объединять приложение в качестве отдельного модуля... т.е. EAR. Что, кажется, ты уже делаешь.
Это кажется странным запросом, поскольку вы уже делаете это правильно, поэтому не меняйте его.
Если вы добавляете свои простые проекты в виде библиотек, рассматривали ли вы возможность использования OSGI для динамической замены пакетов во время выполнения. Вам не нужно повторно развертывать все свои приложения, и вы можете просто поменять банки. jBoss имеет реализацию OSGI под названием jbossosgi, которая в настоящее время находится в стадии бета-тестирования.