我正在运行一个 JAX-RS 应用程序,该应用程序关闭后需要进行一些清理。为此,我安装了一个关闭挂钩,它工作正常。但是,在单元测试中,关闭钩子(当然)不会触发,因为 JVM 在两次调用之间没有关闭。我想解决这个问题,并且只使用关闭挂钩作为最后的手段。我想,如果我只从 servlet 容器中取消部署应用程序而不显式触发关闭,也会发生同样的情况。另外,我想如果应用程序容器在我的关闭钩子仍然注册的情况下继续运行,我可能会造成内存泄漏?
问题:是否有可能监听负责销毁我的 JAX-RS 应用程序的服务器/servlet?我正在考虑类似的Servlet#destroy
方法。
我正在寻找类似的东西:new ResourceConfig().register(new MyShutDownListener())
或者我可以做的事情ShutDownBinder
?有任何想法吗?