1

一度に 2 台の異なるマシンにアプリケーションをデプロイするために使用する Ant スクリプトがあります。ローカルマシンでは問題ありませんが、リモートマシンに関しては、Jboss が起動しているかどうかを確認したいと考えています。稼働している場合はシャットダウンしたいのですが、稼働していない場合は何もしないでください。<sshexec>asの属性を保持することでこれを実行しようとしましたfailonerror="on"。これは、Jboss がすでにダウンしていて、shutdown コマンドでエラーが発生するだけの場合にうまく機能します。しかし、私が直面した本当の問題は、Jboss が実行されていて、シャットダウン コマンドが実行されたときに、適切にシャットダウンされず、エラーが発生したことでした。このような状況で、ビルド スクリプトを停止し、他のマシンの Jboss に問題があり、調べる必要があることをユーザーに知らせたいと思います。

リモート Jboss を停止するためのターゲット コードは次のとおりです。

<target name="stopRemoteJboss" description="Stops Remote Instance of Jboss">
        <echo message="Stopping Remote Jboss" />
        <sshexec trust="true" host="${jboss.remote.host}" username="${jboss.remote.username}" password="${jboss.remote.password}" command="${jboss.remote.home}/bin/shutdown.sh -S" port="${jboss.remote.port}"/>
    </target>
4

2 に答える 2

1

簡単なチェックの結果、次のことがわかりました。スクリプトのインスピレーションとして再利用または使用できる可能性があります:http ://shrubbery.homeip.net/c/display/W/Starting+JBoss+with+ANT

あなたに関連する部分は次のようです:

<java jvm="@{jdkHome}/bin/java"
      classname="org.jboss.Shutdown" fork="true" failonerror="false" resultproperty="shutdown.rc">
    <arg line="-s jnp://@{bindAddr}:@{jnpPort}"/>
    <classpath>
        <pathelement path="@{jbossInstallDir}/bin/shutdown.jar"/>
        <pathelement path="@{jbossInstallDir}/client/jbossall-client.jar"/>
    </classpath>
</java>
<echo>Shutdown rc = ${shutdown.rc}</echo>
<condition property="shutdown.okay">
    <equals arg1="${shutdown.rc}" arg2="0"/>
</condition>
<fail unless="shutdown.okay" message="Unable to shut down JBoss (maybe it hasn't fully started yet?)."/>
<echo>Waiting for @{bindAddr}:@{jnpPort} to stop listening...</echo>
于 2012-12-04T12:20:14.460 に答える
1

リモートポートがアクティブかどうかを確認してみませんか?

<project name="demo" default="check">

    <condition property="server.running" value="running" else="not running">
        <socket server="remoteserver" port="80"/>
    </condition>

    <target name="check" description="Print status message">
        <echo message="Web server status: ${server.running}"/>
    </target>

</project>

JBoss インスタンスがリバース プロキシとして設定されている場合は、別のhttp 条件を使用して HTTP 応答コードを確認できます (アプリケーション サーバーがダウンしている場合は、503 "サービスを利用できません")。

于 2012-12-04T21:09:19.663 に答える