【问题标题】:How do you shutdown an embedded Undertow application?如何关闭嵌入式 Undertow 应用程序?
【发布时间】:2016-01-30 12:05:31
【问题描述】:

Undertow documentation中,下面的例子被呈现为一个非常简单的服务器:

public class HelloWorldServer {

    public static void main(final String[] args) {
        Undertow server = Undertow.builder()
                .addHttpListener(8080, "localhost")
                .setHandler(new HttpHandler() {
                    @Override
                    public void handleRequest(final HttpServerExchange exchange) throws Exception {
                        exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
                        exchange.getResponseSender().send("Hello World");
                    }
                }).build();
        server.start();
    }
}

此服务器如何关闭?有一个server.stop() 方法可能会优雅地关闭服务器,但在此示例中没有使用它。是否应该有与调用server.stop() 方法的运行时关联的关闭挂钩?

【问题讨论】:

  • 是的,如果您想优雅地关闭服务器,则必须调用 server.stop() 方法,否则它将继续运行直到被中断。

标签: java undertow


【解决方案1】:

server.start() 是一个阻塞操作。

如果您在不同的线程中启动服务器,您可以从主线程调用server.stop()。例如:

new Thread(() -> { server.start(); }).start();
System.out.print("Server started. Press 'Enter' to stop...");
System.in.read();
server.stop();
System.out.println("Server stopped.");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 2017-07-27
    • 2019-02-16
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2014-03-11
    • 2018-08-18
    相关资源
    最近更新 更多