我有一个正在初始化并启动的Jetty服务器:
Server server = new Server(50001);
MyHandler myHandler = new MyHandler();
server.setHandler(myHandler);
// attempt to run the server
try {
server.start();
server.join();
} catch (Exception e) {
logger.warning(e.getMessage());
System.exit(2);
}
类MyHandler
有一个名为shutdown
的方法,等待任务完成。我希望在服务器关闭之前调用myHandler.shutdown()
。
我考虑过使用Runtime.getRuntime().addShutdownHook()
,但我不确定将myHandler
传递给它的最佳方式,我怀疑必须有更清晰的方法来执行此操作。
我正在寻找最佳方法。
谢谢!
答案 0 :(得分:0)
按照处理程序链向下,您将看到它运行到AbstractLifeCycle,它定义了一些名为doStart()和doStop()的方法。您可以覆盖这些以插入服务器实例的生命周期,因为您将自己添加为服务器的处理程序。这通常适用于任何扩展AbstractLifeCycle或实现Lifecycle的东西,使其成为注册启动和停止类型行为的便捷机制。在处理server.start()时调用doStart(),并在处理server.stop()调用期间调用doStop()。