1

我正在使用 light4j 和 Undertow 构建一个轻型 Java 应用程序,我需要一种机制来等待现有请求完成,然后再关闭服务器。我发现了GracefulShutdownHandler的存在,并且我设法将它包裹在一个常规io.undertow.server.HttpHandler的 内部 acom.networknt.server.HandlerProvider中,如下所示:

public class PathHandlerProvider implements HandlerProvider {

@Override
public HttpHandler getHandler() {
    return Handlers.routing()
            .add(Methods.POST, "/something", Handlers.gracefulShutdown(new PostHandler()));
}

问题是io.undertow.server.handlers.GracefulShutdownHandler#awaitShutdown在关闭服务器时需要显式调用,这意味着我需要GracefulShutdownHandler包装 my的实例PostHandler,它是在服务器启动时创建的。作为关闭挂钩,我使用的是自定义实现com.networknt.server.ShutdownHookProvider,所以我应该可以在此处调用该awaitShutdown方法。关于如何访问现有处理程序的任何想法(我不想自己管理处理程序)?或者还有其他使用方法GracefulShutdownHandler吗?

4

1 回答 1

1

light-4j 有自己的 ShutdownHook 供用户在服务器关闭期间注入清理逻辑。

https://github.com/networknt/light-4j/blob/master/server/src/main/java/com/networknt/server/ShutdownHookProvider.java

于 2017-11-10T13:16:58.763 回答