如何关闭嵌入式 Undertow 应用程序?
Posted
技术标签:
【中文标题】如何关闭嵌入式 Undertow 应用程序?【英文标题】:How do you shutdown an embedded Undertow application? 【发布时间】: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() 方法,否则它将继续运行直到被中断。 【参考方案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.");
【讨论】:
以上是关于如何关闭嵌入式 Undertow 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
javax.faces.context.FacesContextFactory 使用 JSF 应用程序嵌入 Undertow 时出现异常