TiG*_*iGz 2 java jersey jersey-2.0 hk2
我正在从Jersey 1.x移植一些代码,并且我对各种运行状况检查端点的实现依赖于@Singleton在启动时初始化的所有端点资源,以便能够检测要执行的检查.
在Jersey 2.0中 - 无论我做什么,我似乎无法让我的资源端点在启动时初始化,并且它们仅在第一次访问每个端点时被构造+初始化.
我想我可以在Application课堂上自己初始化它们,但我宁愿使用包扫描!
有没有人知道是否有一些配置选项会告诉Jersey 2急切地初始化它在包扫描期间找到的所有资源端点?
还是一些HK2注释或技巧?
"或者某些HK2注释还是诡计?"
您可以使用HK2的即时范围.只需注释资源类@Immediate(其作用类似@Singleton,所以你可以摆脱它),然后在上面启用直接范围ServiceLocator.一个例子:
import org.glassfish.hk2.api.ServiceLocator;
import org.glassfish.hk2.utilities.ServiceLocatorUtilities;
...
@ApplicationPath("/rest")
public class JerseyApplication extends ResourceConfig {
@Inject
public JerseyApplication(ServiceLocator locator) {
ServiceLocatorUtilities.enableImmediateScope(locator);
packages("thepackages.to.scan");
}
}
Run Code Online (Sandbox Code Playgroud)
基于此相关问题,如果您需要显式实例化ResourceConfig,如链接问题的情况,您可以创建Feature并注册该功能,如此答案中所示
请参阅相关问题
看起来先前链接到的直接范围内存泄漏问题已在版本2.22.1中得到解决
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |