2015-10-30 19 views
4

Undertow documentation,下面的例子是作爲一個非常簡單的服務器:如何關閉嵌入式Undertow應用程序?

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()方法?

+0

是的,如果你想關閉服務器優雅,你將不得不調用server.stop()方法否則它會繼續運行,直到它被中斷。 – Vishnu667

回答

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