1

根据这个问题,可以将侦听器添加到 Spark WS,以便在线程完成执行时运行已初始化但尚未启动的线程。

我想部署一个简单的 Web 服务,它应该作为 JRE 应用程序(无应用程序容器)从控制台运行,并且有一个小问题:在启动时它必须初始化资源,并且在服务器停止时它必须关闭它们。使用上面的参考,如果我在 main 方法中添加一个关闭钩子,代码将如下所示:

public class foo_ws_main{
  private ConnectionPool pool;
  public static void main(){
    pool.initialize();
    post("/ws/path/", (request, response) -> { return pool.doSomething() }
    Runtime.getRuntime().addShutdownHook(new Thread(new SparkWS_Shutdown(pool)));
  }
}

不幸的是,这并不像预期的那样:连接池只会被初始化一次,并且它的资源只会被释放一次,这就是当虚拟机正常终止时(此时 SIGKILL 之类的情况无关紧要)。

这可以做到吗?

4

0 回答 0