如何以编程方式关闭嵌入式jetty服务器?
我像这样启动码头服务器:
Server server = new Server(8090);
...
server.start();
server.join();
现在,我想根据请求关闭它,例如http://127.0.0.1:8090/shutdown http://127.0.0.1:8090/shutdown我该如何干净利落地做呢?
通常提出的解决方案是创建一个线程并从该线程调用 server.stop()。
但我可能需要调用 Thread.sleep() 以确保 servlet 已完成处理关闭请求。
我找到了一个非常干净整洁的方法here http://www.petervannes.nl/files/084d1067451c4f9a56f9b865984f803d-52.php
神奇的代码片段是:-
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();
因为关闭是从单独的线程运行的,所以它不会自行失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)