如何在泽西jax-rs应用程序中注入hk2 servicelocator

时间:2018-04-13 05:39:22

标签: jersey interceptor hk2

我正在迁移使用java序列化/反射来注册服务的遗留服务框架,并将它们作为远程端点(javabin over http)或本地调用无缝地调用。 我已将远程呼叫替换为泽西端点。还使用基于hk2 aop的拦截器来重新创建当前框架的一些拦截能力。当远程客户端调用端点时,它工作正常。 现在我需要对本地调用服务方法执行相同的操作,并且能够使用相同的拦截逻辑作为远程服务方法调用。

(已实施org.glassfish.hk2.api.InterceptionService - 基于本文 - https://blog.dejavu.sk/2015/01/21/intercepting-jersey-resource-method-calls/

我相信如果我能从hk2 registry / locator获取服务实例(jax-rs资源)类,那么方法调用将调用相同的注册拦截器。如何实现呢?

1 个答案:

答案 0 :(得分:0)

如评论Paul所述,您可以随时@Inject或查找ServiceLocator。实际上,它是具有最低ID的服务(添加到hk2系统的第一个服务)。

对于子定位器,您通常会在父ServiceLocator之前获取子ServiceLocator,除非您对查询做了非常具体的操作。这是因为重复服务的规则是选择具有最高定位符id的那个(将是孩子一个)