在 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.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.");