Как изменить порт администратора на Glassfish внутри скрипта - PullRequest
2 голосов
/ 30 сентября 2010

Есть странная проблема Glassfish здесь.Вот как его воспроизвести:

(1) Установите Glassfish v3
(2) Запустите домен по умолчанию:

$GLASSFISH_HOME/bin/asadmin start-domain domain1

(3) Измените порт администратора (вам потребуетсячтобы ввести admin uid и пароль, в нашем скрипте мы используем параметры -u & -W):

$GLASSFISH_HOME/bin/asadmin set configs.config.server-config.network-config.network-listeners.network-listener.admin-listener.port=34848

(4) Завершить работу домена:

$GLASSFISH_HOME/bin/asadmin stop-domain domain1

Вы будетевижу, это не работает.Вы получаете:

CLI306 Warning - server is not running.
Command stop-domain executed successfully.

Но ваш процесс Glassfish все еще выполняется.Хуже того, когда вы попытаетесь запустить процесс, вы получите предупреждение о том, что некоторые из ваших портов уже используются.Конечно, старый процесс все еще имеет их!Ваш единственный выход - killall -9 java

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

Возможные решения:

(1) Использовать sed для domain.xml - не хотелось бы, так как это сложно и рискованно просматривать XML-код.Я видел, как Glassfish изменил порядок атрибутов в этом файле, поэтому мы не можем просто использовать sed для port="4848"
(2) Использовать установщик со сценарием, а не zip-файл и передавать параметры программе установки в качестве ответафайл - это проблематично для наших сценариев установки, которые должны быть слишком мощными.
(3) Использовать пользовательский созданный zip-файл архива установки Glassfish с уже измененным доменом. xml - не вариант, так как порт, который мы устанавливаем, можетизменения в будущем.

Это почти определение углового случая, но мы должны его решить.Сейчас мы собираемся использовать sed domain.xml, но было бы неплохо узнать, есть ли способ, который возможен через CLI.

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Вместо этого вы можете сделать следующее ...

  1. установить v3, разархивировав
  2. удалить домен1
  3. создайте новый домен1, используя порты, которые вы предпочитаете. Страница man для подкоманды create-domain будет содержать все детали
  4. начать этот новый домен ...

Никакого дополнительного запуска или остановки не требуется (и вы можете пропустить шаг 2, если вы не забыли сказать «стартовый домен asadmin mydomain» вместо «начальный домен asadmin»

0 голосов
/ 30 сентября 2010

Sed был не так плох, как я думал, вот что я сделал:

cd $GLASSFISH_HOME
sed -i.bak '/<network-listener[^>]*name="admin-listener"/s/port="4848"/port="34848"/g' glassfish/domains/domain1/config/domain.xml

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

...