程序化Jetty关闭

Ant*_*kov 7 java jetty embedded-jetty

如何以编程方式关闭嵌入式jetty服务器?

我像这样启动jetty服务器:

Server server = new Server(8090);
...
server.start();
server.join();
Run Code Online (Sandbox Code Playgroud)

现在,我想从请求中关闭它,例如http://127.0.0.1:8090/shutdown 如何干净利落地完成它?

通常提出的解决方案是创建一个线程并从该线程调用server.stop().但我可能需要调用Thread.sleep()以确保servlet已完成处理关闭请求.

Jam*_*son 6

我在这里找到了一个非常干净利落的方法

神奇的代码片段是: -

        server.setStopTimeout(10000L);;
        try {
            new Thread() {
                @Override
                public void run() {
                    try {
                        context.stop();
                        server.stop();
                    } catch (Exception ex) {
                        System.out.println("Failed to stop Jetty");
                    }
                }
            }.start();
Run Code Online (Sandbox Code Playgroud)

因为关闭是从一个单独的线程运行的,所以它不会超过自身.


小智 2

尝试server.setGracefulShutdown(stands_for_milliseconds);

我认为它类似于thread.join(stands_for_milliseconds);.