编程语言
首页 > 编程语言> > java-如何侦听JAX-RS取消部署

java-如何侦听JAX-RS取消部署

作者:互联网

我正在运行一个JAX-RS应用程序,该应用程序关闭后需要进行一些清理.我为此安装了一个关机钩,它工作正常.但是,在单元测试中,(当然)不会触发关闭挂钩,因为在两次调用之间未关闭JVM.我要修复此问题,仅将关闭钩子作为最后的手段.我想,如果我仅从servlet容器中取消部署应用程序而不显式触发关闭操作,也会发生同样的情况.另外,我想如果应用程序容器在我的关闭挂钩仍然注册的情况下继续运行,可能会造成内存泄漏?

问题:是否有可能监听负责破坏我的JAX-RS应用程序的服务器/ servlet?我正在考虑Servlet#destroy方法.

我正在寻找类似的东西:new ResourceConfig().register(new MyShutDownListener())还是我可以在ShutDownBinder中做的事情?有任何想法吗?

解决方法:

好吧,我找到了org.glassfish.jersey.server.spi.ContainerLifecycleListener接口.当我的构建使用v2.1时,似乎该接口已在v2.3中进入Jersey.我现在升级了Jersey,并愉快地使用它. (但这是一个Jersey接口,在JAX-RS中没有兄弟姐妹.)

如果这对于以后的读者来说不是一个选择,那么我发现了另一个使用GrizzlyWebContainerFactory的解决方案,该解决方案使我可以使用自己定义的servlet来启动应用程序.但是,该解决方案更加冗长.

标签:jax-rs,jersey,java
来源: https://codeday.me/bug/20191122/2060788.html