Как запустить и остановить сервер JBoss из Maven, связанный с адресом, отличным от localhost? - PullRequest
0 голосов
/ 03 февраля 2010

Я работаю над устаревшим проектом сервера Java Enterprise и сейчас пытаюсь настроить ночные сборки. Мы используем Maven 2, JBoss 4.2 и Bamboo. Идея состоит в том, что у нас есть агент Bamboo на одном из наших серверов разработки, и сборка Maven настроена для жесткого развертывания полученного файла .ear, а затем перезапускает сервер. (Мы не можем использовать мягкое развертывание, потому что наше унаследованное приложение использует библиотеку, которая вызывает исключение во время отмены развертывания ... мы избавимся от этой чертовой библиотеки в какой-то момент, но не сейчас.) Это прекрасно работает, когда я запускаю Maven сборка на моей собственной машине: сервер останавливается и перезапускается с последней сборкой.

Однако на сервере dev у нас есть несколько экземпляров сервера JBoss, связанных с разными IP-адресами. А используемый мной плагин Maven JBoss может только запускать и останавливать сервер, связанный с localhost (по умолчанию). Я только что загрузил исходный код для него, и он просто выполняет сценарии запуска и завершения работы в каталоге bin JBoss, например:

launch( "run", "-c " + serverName );

и

launch( "shutdown", "-S" );

соответственно. Итак, как вы видите, для запуска не используется параметр привязки хоста (-b), и отключение не может уничтожить любой другой сервер, кроме того, который прослушивает порт localhost: 1099 (порт JNDI по умолчанию).

Я полагаю, что обходным путем для запуска будет непосредственная настройка нужного адреса хоста в файлах конфигурации JBoss. (Поведение по умолчанию состоит в том, что эти файлы конфигурации содержат системное свойство, такое как ${jboss.bind.address}, и при запуске JBoss динамически заменяет их фактическим адресом хоста, указанным в качестве параметра -b сценария выполнения или localhost по умолчанию). Поэтому, если я вместо этого введу точный IP-адрес непосредственно в эти файлы конфигурации, теоретически сервер будет привязываться к этому IP-адресу независимо от отсутствующего параметра командной строки -b. Более того, я полагаю, что использование 0.0.0.0 в качестве имени хоста также решило бы проблему остановки ... если бы у нас не было этих других серверов на той же машине. Однако это может работать на другом сервере, полностью зарезервированном для ночной сборки. Нам просто нужно перенести агента Bamboo и т.д ... пару часов дополнительной работы. И у нас, конечно, нет бесконечного запаса неиспользуемых серверов, поэтому мы можем вернуться к квадрату 1, когда нам понадобится еще одна ночная сборка для нашей ветки релизов ...

Альтернативой может быть попытка использовать вместо этого плагин Cargo ... Я пока не знаю, способен ли он на этот трюк.

И последнее, но не менее важное: я мог бы фактически расширить плагин JBoss для обработки привязки хоста - я предполагаю, что это займет всего несколько активных часов, но решит проблему раз и навсегда. Пока это кажется мне наиболее жизнеспособной альтернативой.

Может ли кто-нибудь предложить какой-либо конкретный опыт / комментарии к ним или альтернативные решения?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2010

Плагин Maven Cargo позволяет объявить <systemProperties>, который устанавливает системные свойства в JVM, поэтому должна быть возможность настроить плагин следующим образом:

<container>
  ...
  <systemProperties>
    <jboss.bind.address>192.168.1.10</jboss.bind.address>
  </systemProperties>
</container>

См. эту страницу для другого примера.

Обратите внимание, что есть CARGO-405 об использовании <systemProperties> для jboss.bind.address, но статус действительно неясен.

Лично я бы просто потратил время, чтобы проверить это в Cargo, настройка плагина не займет столько времени (меньше, чем расширение плагина JBoss). Ознакомьтесь с Справочным руководством по плагину Maven2 и плагином Maven2 Начало работы .

0 голосов
/ 08 февраля 2010

Что ж, я расширил плагин для работы с неназванным именем хоста и портом именования. По крайней мере, эта конкретная проблема теперь решена.

Я передал патч Codehaus.

Обновление: оно будет официально выпущено в версии 1.4.1.

А пока, если кому-то срочно нужна исправленная версия плагина, пожалуйста, дайте мне знать.

...