使用ANT运行一个服务器和两个客户端

时间:2014-10-31 21:55:11

标签: java ant rmi

我是ANT世界的新手。我的应用程序基于客户端 - 服务器架构,它使用“RMI”进行通信。

我需要编写一个ANT构建脚本,它自动编译整个代码,启动服务器并运行连接到该服务器的两个客户端。

这是我当前build.xml文件的结构。(我不确定是什么问题)

<?xml version="1.0" encoding="UTF-8"?>
<project default="runClientOne" name="MyFirstAntProject">   
    <target name="compile">     
        <javac srcdir="./src" destdir="classfiles" />       
    </target>       
    <target name="runServer" depends="compile" >
        <java classname="com.jain.RMIServer">
            <classpath path="classfiles" />
        </java>
    </target>       
    <target name="runClientOne" depends="runServer">            
        <java classname="com.jain.RMIClient" fork="true" taskname="A" >
            <classpath path="classfiles" />
            <arg value="localhost"/>
            <arg value="Sumit"/>
        </java>
        <java classname="com.jain.RMIClient" fork="true" taskname="B">
            <classpath path="classfiles" />
            <arg value="localhost"/>
            <arg value="Sushil"/>
        </java>
    </target>
</project>

2 个答案:

答案 0 :(得分:3)

谢谢大家,

我已经发现我必须使用<parallel>My CODE </parallel>

答案 1 :(得分:0)

当我试图完成类似的事情时,我偶然发现了这个问题,这就是我如何实现开始运行服务器和客户端的目标。 (我的答案扩展了Sushil和SO answer

情况就是这样:我有一台服务器,当我启动时,我希望3个客户端立即连接到服务器,所有这些都在一个单独的过程中。

诀窍是将parallelsequential嵌套在build.xml目标

可以将睡眠呼叫更改为等待该过程。

   <target name="start-all" depends="build" 
                  description="Starts 1 Server and 2 clients ">
     <parallel>
       <sequential>
         <java classname="Server" fork="true">
           <classpath refid="master-classpath"/>
           <arg line="${port}"/>
         </java>
       </sequential>
       <sequential>
          <sleep milliseconds="500"/>
          <antcall target="start-client">
          <param name="server.address" value="localhost" />
          <param name="server.port" value="${port}"/>
          </antcall>
       </sequential>
     </parallel>
   </target>

这将启动服务器,然后启动客户端,或者使用<daemon>启动服务器,然后立即启动客户端。