暗流中的优雅关闭



我正在使用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,这意味着我需要包装我的PostHandlerGracefulShutdownHandler实例,该实例是在服务器启动时创建的。作为关闭钩子,我使用的是com.networknt.server.ShutdownHookProvider的自定义实现,所以这是我应该能够调用awaitShutdown方法的地方。关于如何访问现有处理程序的任何想法(我不想自己管理处理程序(?还是有另一种使用GracefulShutdownHandler的方法?

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

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

相关内容

  • 没有找到相关文章

最新更新