检测嵌入式Jetty服务器何时完全初始化

时间:2009-08-11 14:29:13

标签: jetty embedded-jetty

我在一个java应用程序中嵌入了Jetty,并在Jetty服务器对象的实例上调用了start()方法(在设置了描述静态和动态Web内容位置的处理程序列表之后)。 start()调用是否阻塞,直到初始化完成?如果没有,我如何确定服务器何时完全启动并准备好接收请求?

4 个答案:

答案 0 :(得分:5)

是的,当Server.start()返回时,服务器已完全初始化。没有必要做任何其他事情。文档并不清楚这种行为,但我只是通过查看代码来验证它。

答案 1 :(得分:3)

我们有一个嵌入式Jetty应用程序,有几十个插件WARS和servlet来初始化......我从来没有在应用程序启动时浏览器请求超时,所以服务器初始化过程非常快。但是,您可以通过选中

来检查Jetty服务器是否仍在启动或准备就绪
Server.isStarting()
Server.isStarted()
Server.isRunning()

HTH

答案 2 :(得分:0)

这是我在ANT中如何解决这个问题的一个例子,一旦jetty应用程序准备好就启动firefox

<parallel>
    <jetty tempDirectory="${work.dir}">
        <connectors>
            <selectChannelConnector port="${jetty.port}"/>
        </connectors>
        <webApp name="ex1" warfile="ex1.war" contextpath="/ex1"/>
    </jetty>

    <sequential>
        <waitfor maxwait="10" maxwaitunit="second">
            <http url="http://localhost:${jetty.port}/ex1"/>
        </waitfor>

        <exec executable="firefox" spawn="yes">
            <arg line="http://localhost:${jetty.port}/ex1"/>
        </exec>
    </sequential>
</parallel>

答案 3 :(得分:-1)

  

在初始化完成之前,start()是否会阻塞?

没有。它将在后台运行服务器

  

如果没有,我该如何确定服务器何时完全启动并准备好接收请求?

您使用org.eclipse.jetty.server.Server#join()方法。

// The use of server.join() the will make the current thread join and
// wait until the server is done executing.
// See
// http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#join()
server.join();

参见[1]更多信息。

[1] http://www.eclipse.org/jetty/documentation/9.3.x/embedding-jetty.html