Dependency injection JAX-RS:带关闭/销毁/处置的依赖项注入 实际问题

Dependency injection JAX-RS:带关闭/销毁/处置的依赖项注入 实际问题,dependency-injection,jax-rs,jersey-2.0,Dependency Injection,Jax Rs,Jersey 2.0,我试图用Jersey 2.0创建一个简单的JAX-RS应用程序,如下所示: @ApplicationPath(“”) 公共类MyService扩展了ResourceConfig{ 公共MyService(){ 包(MyService.class.getPackage().getName()); 注册(新的ApplicationBinder()); } 私有静态类ApplicationBinder扩展了AbstractBinder{ @凌驾 受保护的void configure(){ MyDepe

我试图用Jersey 2.0创建一个简单的JAX-RS
应用程序,如下所示:

@ApplicationPath(“”)
公共类MyService扩展了ResourceConfig{
公共MyService(){
包(MyService.class.getPackage().getName());
注册(新的ApplicationBinder());
}
私有静态类ApplicationBinder扩展了AbstractBinder{
@凌驾
受保护的void configure(){
MyDependency dep=新的MyDependency();
绑定(dep.to)(MyDependency.class);
//TODO正确关闭/销毁/处置某个“dep”
}
}
}
MyDependency
对象的创建成本有点高,它们有一个
shutdown()
方法,需要在销毁之前调用该方法。我应该在哪里以及如何使用JAX-RS执行此类清理任务

更多背景信息(如有必要) 使用创建的
MyDependency
对象的JAX-RS资源实现如下所示–如果这与问题有任何关联:

@Path(“getit”)
@独生子女
公共类MyResource{
私有最终MyDependency依赖;
@注入
公共MyResource(MyDependency){
依赖性=依赖性;
}
@得到
@生成(MediaType.TEXT\u HTML)
公共字符串getIt(){
返回这个.dependency.getIt();
}
}
与Servlet 3.0兼容的容器意味着您不能依赖CDI的可用性,因此我们对hk2感到震惊

MyDependency
上实现
org.glassfish.hk2.api.PreDestroy
应该指示绑定框架进行适当的清理


关闭时,hk2应调用接口定义的
preDestroy()
方法。

何时需要处理
MyDependency
?另外,您是否正在使用JavaEE 7应用程序服务器(即Glassfish)?@CarloPellegrini
MyDependency
需要在servlet运行时正确关闭。我针对的是任何与Servlet 3.0兼容的容器,理想情况下无需编写
web.xml
文件(因此是
@ApplicationPath
注释)。感谢您的回答。我尝试使用
MyDependency
ApplicationBinder
来实现。但是,这两个
preDestroy()
方法都没有被调用。我已经用Jetty 9.0.4.v20130625对此进行了测试,它本应支持。有什么想法可能是错误的吗?只有在类是容器管理的情况下,PreDestroy和PostConstruct才有效,这可能是问题所在(至少对我来说是这样)