以编程方式关闭Jetty与xml配置的服务器

时间:2013-08-16 21:23:00

标签: java xml jetty

我正在使用在xml中配置的jetty服务器,如下所示:http://wiki.eclipse.org/Jetty/Reference/jetty.xml

我需要能够使用java代码关闭此服务器,但我不知道如何检索服务器的句柄。我完全迷失了如何做到这一点,它已经困扰了我好几天。任何见解,甚至只是一些可能有用的阅读材料,都会受到赞赏。

如果需要,请提供更多信息。


更新

我已根据以下代码在jetty.xml中的处理程序列表中添加了ShutdownHandler:

Server server = new Server(8080);
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]
{ someOtherHandler, new ShutdownHandler(server,"secret password") });
server.setHandler(handlers);
server.start();

然而,我对如何完成它有点不确定,我不知道有任何真正的方法来检查它是否不正确。我是否可以从配置标签内部以这种方式引用Jetty服务器?

<Item>
 <New id="ShutdownHandler" class="org.eclipse.jetty.server.handler.ShutdownHandler">
  <Arg><Ref id="Server"/></Arg>
  <Arg type="java.lang.String">password</Arg>
 </New>
</Item>

另外,我对如何在URL url = new URL("http://localhost:" + port + "/shutdown?token=" + shutdownCookie);

中检索关机cookie感到困惑

是否与密码或密钥有关?因为我尝试了两者,当java.net.SocketException: Unexpected end of file from server被调用时,两人都给了我connection.getResponseCode();

1 个答案:

答案 0 :(得分:1)

这是一种方法:

http://www.eclipse.org/jetty/documentation/current/shutdown-handler.html

你可以在xml中配置处理程序,然后有一个小的java主类来阻止它。我不知道您是否希望使用严格的jetty.xml进行关闭,就像您最初要求的那样。如果您正在使用可以使用的分发(通常是使用jetty.xml),还有一个STOP键机制,我将链接到此处:

http://www.eclipse.org/jetty/documentation/current/quickstart-running-jetty.html#quickstart-stopping-jetty