gpt4 book ai didi

java - 如何让我的 Jersey 2 端点在启动时急切地初始化?

转载 作者:行者123 更新时间:2023-12-01 14:08:39 26 4
gpt4 key购买 nike

我正在从 Jersey 1.x 移植一些代码,我对各种健康检查端点的实现依赖于所有 @Singleton在启动时初始化端点资源,以便能够检测要执行哪些检查。

在 Jersey 2.0 中 - 无论我做什么,我似乎都无法在启动时初始化我的资源端点,并且只有在第一次访问每个端点时才构造+初始化它们。

我想我可以在 Application 中自己初始化它们类,但我宁愿使用包扫描!

有没有人知道是否有一些配置选项会告诉 Jersey 2 急切地初始化它在包扫描期间找到的所有资源端点?

或者一些HK2注释或技巧?

最佳答案

"Or some HK2 annotation or trick?"


您可以使用HK2的 Immediate Scope .只需用 @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");
}
}

更新
基于 this related question , 如果您需要显式实例化 ResourceConfig ,与链接问题的情况一样,您可以创建一个 Feature并注册该功能,如 this answer 中所示
更新 2
请查看 related issue
更新 3
看起来之前链接的立即范围内存泄漏问题已在 2.22.1 版中解决

关于java - 如何让我的 Jersey 2 端点在启动时急切地初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28114602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com