我正在使用light4j和Undertow构建一个轻量级的Java应用程序,我需要一种在关闭服务器之前等待现有请求完成的机制。我发现了GracefulShutdownHandler的存在,并设法将它包装在一个常规的io.undertow.server.HttpHandler中,放在一个com.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,这意味着我需要包装PostHandler的GracefulShutdownHandler实例,该实例是在服务器启动时创建的。作为关闭钩子,我使用了com.networknt.server.ShutdownHookProvider的自定义实现,因此这应该是我能够调用awaitShutdown方法的地方。关于如何访问现有的处理程序(我不想自己管理这些处理程序)有什么想法吗?还是有其他使用GracefulShutdownHandler的方法?
发布于 2017-11-10 21:16:59
light-4j有自己的ShutdownHook,供用户在服务器关闭期间注入清理逻辑。
https://stackoverflow.com/questions/45919668
复制相似问题