1

我有一个正在初始化和启动的 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给它的最佳方式,我怀疑必须有一种更清洁的方式来做到这一点。

我正在寻找最好的方法来做到这一点。

谢谢!

4

1 回答 1

0

沿着处理程序链往下走,您会看到它运行到 AbstractLifeCycle,它定义了一些称为 doStart() 和 doStop() 的方法。您可以覆盖这些以插入服务器实例的生命周期,因为您将自己作为处理程序添加到服务器。这通常适用于扩展 AbstractLifeCycle 或实现 Lifecycle 的任何东西,使其成为注册启动和停止类型行为的便捷机制。doStart() 将在 server.start() 的处理过程中被调用,doStop() 在 server.stop() 调用的处理过程中被调用。

于 2013-07-22T12:32:22.163 回答