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