检测嵌入式Jetty服务器何时完全初始化
我在java应用程序中嵌入了Jetty,并在Jetty服务器对象的实例上调用start()方法(在设置描述静态和动态web内容位置的处理程序列表之后)。start()调用是否会阻塞,直到初始化完成?如果没有,我如何确定服务器何时完全启动并准备好接收请求?以下是我如何在ANT中解决这个问题的一个示例,在jetty应用程序就绪后启动firefox检测嵌入式Jetty服务器何时完全初始化,jetty,embedded-jetty,Jetty,Embedded Jetty,我在java应用程序中嵌入了Jetty,并在Jetty服务器对象的实例上调用start()方法(在设置描述静态和动态web内容位置的处理程序列表之后)。start()调用是否会阻塞,直到初始化完成?如果没有,我如何确定服务器何时完全启动并准备好接收请求?以下是我如何在ANT中解决这个问题的一个示例,在jetty应用程序就绪后启动firefox <parallel> <jetty tempDirectory="${work.dir}"> <co
<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>
我们有一个嵌入式Jetty应用程序,其中有几十个插件WAR和servlet需要初始化……在应用程序启动时,我从未遇到过浏览器请求超时,因此服务器初始化过程非常快。但是,您可以通过检查来检查Jetty服务器是否仍在启动或准备就绪
Server.isStarting()
Server.isStarted()
Server.isRunning()
HTH是的,当server.start()返回时,服务器已完全初始化。没有必要做任何其他事情。文档中不清楚这种行为,但我只是通过查看代码来验证它 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] 否,join()
在服务器准备好处理HTTP请求时不返回,在服务器关闭且不再运行时返回。