2012-12-04 18 views
1

我有用於在同一時間部署我在兩臺不同的機器應用的Ant腳本。在本地機器上我沒有問題,但是當涉及到遠程機器時,我想檢查一下Jboss是否啓動。如果它已經到了,那麼我想關閉它,但如果沒有,那麼就不應該做任何事情。我試圖通過將<sshexec>的屬性保存爲failonerror="on"來完成此操作。這在Jboss已經關閉並且關機命令僅給出一些錯誤時運行良好。但是我面對的真正問題是當Jboss運行時,以及執行關機命令時,它沒有正常關機並出現一些錯誤。正是在這種情況下,我想停止構建腳本並讓用戶知道另一臺機器上的Jboss存在問題,並且需要查看它。Ant腳本來檢查的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> 

回答

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

這種技術的工作,但我已經把通過螞蟻的玩弄實用程序,用於檢查是否運行JBoss或不使用命令「twiddle.sh得到jboss.system:類型=服務器已啓動」,開始時回報率開始= TRUE並給出了一個錯誤消息,當它已經停機。 – Amit

+0

鏈接應該http://shrubbery.homeip.net/c/display/W/Starting+JBoss+with+ANT –

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「服務不可用」,如果應用程序服務器已關閉)