Я работаю над устаревшим проектом сервера 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 для обработки привязки хоста - я предполагаю, что это займет всего несколько активных часов, но решит проблему раз и навсегда. Пока это кажется мне наиболее жизнеспособной альтернативой.
Может ли кто-нибудь предложить какой-либо конкретный опыт / комментарии к ним или альтернативные решения?