Проблема - удаленное горячее развертывание, многомодульный проект Maven - PullRequest
0 голосов
/ 09 марта 2011

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

Хорошо, позвольте мне начать с обзора окружающей среды.

У нас есть многомодульный проект maven с около 11 JAR. В зависимости от этих внутренних JAR-файлов 9 файлов WAR, из которых 8 помещаются в файл EAR. Оставшийся файл WAR развертывается отдельно как отдельное приложение. Когда создаются 8 WAR-файлов (которые находятся в EAR), они создаются как тощие WAR-файлы, поэтому результирующий EAR-файл имеет минимальный размер со всеми зависимостями в разделе APP-INF / lib. Все это работает без проблем. В настоящее время мы развертываем на удаленном сервере WebLogic 10.3, который имеет много памяти и ЦП, поэтому нагрузка не на наши отдельные машины. Мы также публикуем ночные снимки с использованием сервера непрерывной интеграции.

Размещаемые нами артефакты:
EAR-файл, содержащий 8 WAR-файлов, 11 внутренних JAR-файлов и сторонние библиотеки: ~ 70MB
Другой файл WAR: ~ 110 МБ

Некоторые наши инженеры-программисты хотели бы работать дома, через VPN-подключение и иметь варианты инкрементного / горячего развертывания. В противном случае из-за того, что мы развертываем с помощью веб-логики / maven, они вынуждены создавать весь файл EAR или файл WAR размером 110 МБ и загружать их через VPN. Это не весело и не быстро. Я читал на JRebel , и мне было интересно, кто-нибудь еще использует JRebel с многомодульным проектом maven для удаленного развертывания и как это сделать эффективно.

Из некоторых моих чтений рекомендуется «загрузить изменения» на сервер и иметь конфигурации rebel.xml, которые читают эти каталоги для этого конкретного развертывания, что ... хорошо, подводит нас к данной проблеме. Как сказать Maven, чтобы дамп измененных ресурсов / вновь скомпилированных файлов классов в какой-то другой каталог, чтобы я мог загрузить их на сервер и в соответствующие папки (наш сервер содержит что-то вроде 10+ экземпляров WebLogic, работающих на разных портах, по одному экземпляру на разработчик). Или просто попросите разработчиков поделиться своей папкой рабочего пространства с сетью и настроить файлы rebel.xml (например, в JAR-файле), указав соответствующую папку // COMPUTERNAME / workspace / jarProjectName / target / classes. Проблема, которую я предвижу, заключается в том, что каждый раз, когда они запускают WebLogic, он собирает все файлы .class и конфигурации и файлы JSP по сети, потому что файл rebel.xml выигрывает первым, и это будет ужасно по VPN. ПОСЛЕ ТОГО, КАК развертывание завершено, тогда горячее развертывание должно работать как обычно. Я просто не хочу ненужных накладных расходов на передачу всех классов по сети для первой загрузки, и не только, что иногда разработчики находятся в офисе, выключают свой компьютер и затем идут домой. Что происходит с JRebel / WebLogic?

Кажется, гораздо лучше увидеть только те файлы, которые изменились в различных проектах maven, и отправить их по FTP в нужное место на сервере, чтобы JRebel мог выполнить свою задачу полностью на стороне сервера. У кого-нибудь есть хороший способ сделать это? Или, может быть, у кого-то есть решение, которое вообще не включает JRebel. Давай поговорим.

Ответы [ 3 ]

1 голос
/ 05 мая 2012

Теперь возможно использовать JRebel и для удаленного развертывания. Действительно прост в настройке, не нужно для специальных сетевых конфигураций, открытия портов на удаленном компьютере и т. Д.

http://zeroturnaround.com/jrebel/remoting

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

0 голосов
/ 10 марта 2011

Почему бы не использовать для этого протокол samba (http://en.wikipedia.org/wiki/Samba_(software))? Вам просто понадобится сетевой диск, который будет использоваться в качестве общего ресурса. Разработчик может указать путь к компилятору, указывающий на это местоположение, и в развернутом приложении rebel. XML-пути должны указывать на одни и те же каталоги. Даже если разработчик выключит свою машину, Weblogic будет продолжать работать.

0 голосов
/ 09 марта 2011

Что вы должны сделать - это заставить каждого разработчика запускать свои собственные локальные экземпляры WebLogic.

В WebLogic используется довольно много памяти, но развертывание через VPN будет проигрышным предложением. Единственный способ, которым это может работать, - это LiveRebel . Но опять же, вы все равно заплатите большой штраф за передачу по сети, особенно по медленному соединению.

Скорее всего, вам лучше запустить приложение в JDeveloper WLS и отбросить огромный общий экземпляр WebLogic.

...