我怎么知道jetty从一个蚂蚁目标成功启动了应用程序实例?

时间:2014-12-01 15:14:27

标签: ant jetty

我面临以下问题:每当我尝试使用应用程序实例启动Jetty时,我都需要检查应用程序是否正在运行。我需要从蚂蚁目标做到这一点。 我希望有一些行为类似于以下伪代码:

**

<target name="target1"
            depends="run-jetty-with-application"
            description="Target1">
        <--when run-jetty-with-application is ok(jetty is up and application is running)-->
        <antcall target="target2"/>
        <--end when-->
    </target>

** 我还应该提一下,我没有公开的网址,可以告诉我应用程序的状态。 我不是在追求像waitfor这样的hacky解决方案。

提前致谢!

1 个答案:

答案 0 :(得分:1)

只有两种方法可以了解Jetty是否已启动,所有Web应用程序都已正确部署,所有生命周期均已成功启动,并且服务器可用于提供内容。

  1. 定期在该网络应用上询问资源,确认其已启动并正在运行。 (如果资源在一段时间后无法使用,则超时失败)
  2. 挂钩LifeCycle.Listener组件上的Server,等待服务器的.lifeCycleStarted(LifeCycle event),然后遍历整个处理程序树,查找无法通过其部署的任何Handler组件的DeploymentManager。
  3. 你可以想象,第一种技术是最简单的。

    这是Ant中的<waitfor>工具,and is what the Jetty project itself uses

    第二种方法需要自定义Ant任务。

    你可以自己写,也知道它会做你想要的。或者使用带有守护进程模式的jetty-ant tasks来获得几乎相同的东西(守护进程模式下的JettyRunTask启动服务器,但它不会等待开始完成或webapps成功部署在它将控制权返回给ant之前。