Как погасить JBoss из shell-скрипта или из build-файла Ant?
- Из shell - локальный экземпляр JBoss:
#!/bin/sh
#pgrep -fl org.jboss.Main
pkill -f org.jboss.Main
Принцип работы прост - найти и уничтожить :) процесс, содержащий строку запуска с именем класса JBoss. - Из shell - удалённый/локальный экземпляр (при запуске надо задать имя или IP хоста, номер порта, для локального экземпляра именем хоста может быть localhost или 127.0.0.1):
#!/bin/sh
if test $1; then HOST=$1; else HOST=localhost; fi
if test $2; then PORT=$2; else PORT=8080; fi
echo "Shutting down $HOST:$PORT"
wget -O /dev/null "http://$HOST:$PORT//jmx-console/HtmlAdaptor?action=invoke
OpByName&name=jboss.system%3Atype%3DServer&methodName=shutdown"Здесь через wget серверу даётся точно та же команда остановки, что и вручную из jmx-консоли в браузере - Из shell - удалённый/локальный экземпляр при запароленной jmx-консоли (при запуске надо задать имя/IP хоста, номер порта, в самом скрипте надо вписать действительные имя/пароль администратора jmx-консоли):
#!/bin/sh
if test $1; then HOST=$1; else HOST=localhost; fi
if test $2; then PORT=$2; else PORT=8080; fi
echo "Shutting down $HOST:$PORT"
wget --user=admin --password=admin --output-document=stop-jboss-result.html "http://$HOST:$PORT//jmx-console/HtmlAdaptor?action=invoke
OpByName&name=jboss.system%3Atype%3DServer&methodName=shutdown" - Из build-файла Ant (обычно он называется build.xml) - локальный экземпляр JBoss (надо задать номер порта jboss.stop.port, по которому определяется состояние JBoss - запущен или остановлен, каталог установки JBoss jboss.home, каталог конфигурации экземпляра JBoss jboss.configuration.dir, имя хоста as.host, номер порта HTTP as.http.port):
<target name="jboss_check">
<condition property="jboss.running">
<socket port="${jboss.stop.port}" server="${as.host}" />
<!-- <socket port="${as.http.port}" server="${as.host}" /> -->
</condition>
</target>
<target name="jboss_stop" description="Stop JBoss" depends="jboss_check" if="jboss.running">
<echo>Stopping local JBoss (${jboss.home}/bin/). Please wait...</echo>
<java jar="${jboss.home}/bin/shutdown.jar" dir="${jboss.configuration.dir}" fork="true" classpath="${jboss.home}/bin/shutdown.jar">
<arg line="-s ${as.host}" />
</java>
<waitfor maxwait="120" maxwaitunit="second">
<not>
<socket server="${as.host}" port="${as.http.port}" />
</not>
</waitfor>
</target>
Пример файла с настройками (типа jboss.properties):
jboss.home=/opt/jboss/jboss-4.2.3.GA
jboss.configuration=default
jboss.configuration.dir=${jboss.home}/server/${jboss.configuration}/conf
jboss.stop.port=1099
#as.instance.dir=j:/server/instance23
as.instance.dir=${jboss.home}/server/${jboss.configuration}
as.deploy.dir=${as.instance.dir}/deploy
as.host=localhost
as.http.port=8080
В build-файле мы сначала определяем состояние сервера (слушает порт, т.е. живой, или не слушает, т.е. неживой или ему совсем плохо), и при живом сервере делаем то же, что делает скрипт shutdown.sh из дистрибутива JBoss, затем ждём, пока он не погасится полностью, чтобы не начать выполнение последующих задач, пока сервер ещё не погасился. - Из build-файла Ant - удалённый/локальный экземпляр JBoss (настройки аналогичны предыдущему примеру, принцип работы аналогичен пункту 2):
<target name="jboss_shutdown" description="Shutdown JBoss">
<echo>Stopping JBoss (http://${as.host}:${as.http.port}). Please wait...</echo>
<get src="http://${as.host}:${as.http.port}//jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.system%3Atype%3DServer&methodName=shutdown"
dest="jboss_shutdown_result.html" ignoreerrors="true" />
<waitfor maxwait="120" maxwaitunit="second">
<not>
<socket server="${as.host}" port="${as.http.port}" />
</not>
</waitfor>
</target> - Из build-файла Ant - удалённый/локальный экземпляр JBoss при запароленной jmx-консоли (отличается от предыдущего примера только атрибутами username= и password=, в которые надо прописать имя/пароль администратора jmx-консоли):
<target name="jboss_shutdown" description="Shutdown JBoss">
<echo>Stopping JBoss (http://${as.host}:${as.http.port}). Please wait...</echo>
<get src="http://${as.host}:${as.http.port}//jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.system%3Atype%3DServer&methodName=shutdown"
dest="jboss_shutdown_result.html" username="admin" password="admin" ignoreerrors="true" />
<waitfor maxwait="120" maxwaitunit="second">
<not>
<socket server="${as.host}" port="${as.http.port}" />
</not>
</waitfor>
</target>
7. Нажать на самую большую кнопку на системнике.
ОтветитьУдалить8. Выдернуть из розетки штекер провод которого подключен к системному блоку.
Восьмой не пойдёт - у нормального компа в розетке торчит провод от бесперебойника. И вообще, как написать скрипт, выдёргивающий вилку из розетки?
ОтветитьУдалить