【问题标题】:Programmatically shutdown Jetty with xml configured server使用 xml 配置的服务器以编程方式关闭 Jetty
【发布时间】:2013-08-17 08:26:20
【问题描述】:

我正在使用在 xml 中配置的码头服务器,如下所示: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 Server?

<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 感到有些困惑

它与密码或密钥有什么关系吗?因为我两种都试过了,当connection.getResponseCode();被调用时,两者都给了我java.net.SocketException: Unexpected end of file from server

【问题讨论】:

    标签: java xml jetty


    【解决方案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

    【讨论】:

    • 感谢您的帮助。我想这个问题的措辞有点尴尬,我只是说码头服务器是在 xml 中配置的,而不是我想使用严格的 jetty.xml 来关闭。关于提供的代码,我仍然遇到一些问题。我已经用我遇到的一些问题更新了主帖子,请看一下。
    • 切换服务器中的 dumpOnStartup 并打印出处理程序链并让您知道它已正确连接
    • 它似乎连接正确,但仍然无法正常工作。我仍然不知道为什么SocketException 出现在connection.getResponseCode()
    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2016-01-30
    • 2011-03-12
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多