Ant脚本,用于检查Jboss的远程实例是否正在运行

时间:2012-12-04 07:26:20

标签: ant jboss

我有一个Ant脚本,用于一次在两台不同的机器上部署我的应用程序。使用本地机器我没有问题,但是当谈到远程机器时,我想检查Jboss是否启动。如果它已经启动,那么我想关闭它,但如果它没有,那么什么都不应该。我尝试将<sshexec>的属性保持为failonerror="on"来实现此目的。当Jboss已经关闭并且shutdown命令仅提供一些错误时,这很有效。但是我遇到的真正问题是当Jboss运行时以及执行shutdown命令时,它没有正确关闭并且出现了一些错误。在这些情况下,我想停止构建脚本并让用户知道另一台机器上的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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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 condition来检查HTTP响应代码(如果应用程序服务器已关闭,则为503“服务不可用”)