【问题标题】:How can you shut down an embedded jetty instance?如何关闭嵌入式码头实例?
【发布时间】:2016-01-12 21:59:26
【问题描述】:

我有一个嵌入式码头项目,它构建了一个启动我们的 web 应用程序的 .jar 文件。

public static void main(String[] args){            
            final Server server = new Server(threadPool);
            //Do config/setup code for servlets/database/contexts/connectors/etc
            server.start();
            server.dumpStdErr();
            server.join();
}

因此,虽然通过调用 java -jar MyApp.jar 来启动我们的服务器非常有效,但我不知道如何停止它。当我想通过我们的构建服务器停止服务器时,这尤其令人讨厌。

当我们使用 Jetty 服务并部署 .war 文件时,我们可以这样做:

  1. 通过 Jenkins 构建最新的 .war 文件
  2. 通过 shell 停止 Jetty 服务 (sudo service jetty stop)
  3. 用新的 .war 文件覆盖 /opt/jetty/webapp 中的旧 .war 文件
  4. 通过 shell 启动 Jetty 服务(sudo service jetty start)

我目前有两个想法:

  1. 如果您指定了秘密获取参数,请创建一个调用 server.stop() 的 servlet。在 Jekins 的 shell 上使用 curl 来访问这个 servlet。
  2. 使用 Apache-Commons 守护程序包装器之类的东西将我的应用程序变成服务。

我是否缺少一些明显的机制来停止服务器?

【问题讨论】:

  • 向进程发送终止是否有效?

标签: java service jenkins jetty embedded-jetty


【解决方案1】:

使用ShutdownHandler

服务器端:

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

客户端(发出关闭)。

public static void attemptShutdown(int port, String shutdownCookie) {
    try {
        URL url = new URL("http://localhost:" + port + "/shutdown?token=" + shutdownCookie);
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        connection.getResponseCode();
        logger.info("Shutting down " + url + ": " + connection.getResponseMessage());
    } catch (SocketException e) {
        logger.debug("Not running");
        // Okay - the server is not running
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 2012-05-30
    • 2013-07-19
    • 2015-10-01
    • 2014-03-15
    • 2014-02-25
    • 2019-09-25
    • 2013-12-22
    相关资源
    最近更新 更多