我正在使用 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
吗?