问题标签 [hk2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1645 浏览

java - 使用 Jersey 2 和 Apache Shiro 进行 HK2 依赖注入

我正在使用 Jersey 2.5.1 创建一个休息 api。我正在使用 HK2 进行依赖注入。后来我决定使用 Apache Shiro 进行身份验证和授权。

在创建自己的自定义 Shiro Realm 时,我遇到了一些问题。在我的领域中,我想注入一个依赖项。但是,当我运行我的应用程序时,依赖项没有得到解决。

这是我的设置:

web.xml

shiro.ini

我的应用程序.java

ApplicationBinder.java

MyCustomRealm.java




所以,问题在于 MyCustomRealm 中没有注入源。所有其他不是由 Shiro 创建的类都会注入其依赖项。问题可能是 Shiro 是通过 ini 文件创建我的 CustomRealm 吗?

0 投票
2 回答
1744 浏览

java - HK2 注释未处理

我正在通过 Jersey 使用 HK2,并希望让 @Immediate 服务正常工作。在此过程中,我注意到(看起来)我的服务的所有注释都没有被注册。例如,在启动我的 ServiceLocator 并查看使用@Singleton 注释的服务的描述符之后,它仍然设置为@PerLookup。我启动应用程序处理程序的代码如下:

我的活页夹注册了这样的服务:

在此之后立即查看我的 ServiceLocator,我发现范围没有从类中拉出(仍然是 @PerLookup)。是否需要指定其他内容来告诉 HK2 解析类注释?这似乎是一个非常标准的用例,所以我一定遗漏了一些东西。

0 投票
1 回答
1042 浏览

java - 当 bean 不是通过 hk2 创建时,@inject 不起作用

我一直在尝试向合同注入服务:

但是 categoryDAO 为空。

我什至尝试绑定它:

但它仍然为空。

我像这样初始化MyCategoryManagerwith Reflections 框架:

0 投票
1 回答
515 浏览

google-app-engine - 在 appengine 上升级到球衣 2.6 后出现 NullPointerException

我有一个在 appengine 上运行 jersey 的 java 应用程序。我最近升级到 jersey 2.6 以使用新的 HK2 AOP 功能。由于我已完成此升级,因此在通过球衣请求 Web 服务时遇到了一些问题。服务器运行良好一段时间,然后我对每个请求都有异常,修复错误的唯一方法是在 appengine 上重新部署应用程序。我不更改任何代码行,我只是重新部署应用程序。升级到 jersey 2.6 并使用 HK2 AOP 实现 2 个 methodInterceptors 后出现此问题。这是出现错误时我收到的每个请求的堆栈:

0 投票
1 回答
3605 浏览

java - 带有泽西资源的 HK2 MethodInterceptor

如何设置 aopMethodInterceptor以使用 Jersey 资源?

这是我尝试过的,遵循文档:

第 1 步 - 拦截服务

第 2 步 - 注册服务

但是,这似乎不起作用,因为我的任何资源方法都没有被拦截。这可能是因为我使用@ManagedAsync了所有资源吗?有任何想法吗?

另外,请不要建议一个ContainerRequestFilter. 请参阅此问题,了解为什么我不能使用一个来处理安全性。

0 投票
2 回答
3417 浏览

java - HK2 相当于 @Provides in Guice for Jersey 2

我一直在使用 Jersey 1.X 和 Google Guice 进行依赖注入。切换到 Jersey 2.X 似乎意味着您需要使用 HK2 进行依赖注入,我正在努力寻找我在 Guice 中拥有的一些东西。

在带有 Guice 的 Jersey 1.X 中,我会为应用程序提供类似的内容:

像这样的测试:

我的任何资源都看起来像这样:

那就是我可以为我的测试定义模拟,一切都很好。

但是,对于 Jersey 2.X,我找不到 @Provides 注释的任何等效项。MyResource 实际上是相同的。对于真实应用程序的依赖注入,我有:

但我不知道如何为测试提供模拟。有人知道怎么做吗?

0 投票
2 回答
15027 浏览

dependency-injection - 使用内置 Jersey 依赖注入在 Je​​rsey 2 中创建简单的单例类时遇到问题

我无法使用 Jersey 2 (2.7) 和仅 Jersey 的内置 HK2 依赖注入来实现一个非常基本的单例类。我在Tomcat上运行它。

我的目标是创建一个支持类的单例实例,供各种 Web 服务方法使用。我在构造函数注入、方法注入和注释类成员之间没有强烈的偏好(如下所示)。

这是我的单身课程:

这是我的应用程序类:

这是我的 Provider/ContextResolver 类:

网页.xml:

我打算注入 JustOne 类的单例实例的资源:

在泽西岛部署/初始化战争时会发出此警告:

当我调用这个网络服务时,我得到的错误:

所以,我明白了:hk2 没有获得足够的信息来创建/绑定 JustOne 实例和/或查找/使用我的 JustOneProvider。我确定我缺少一些基本的东西。任何指导将不胜感激。

0 投票
2 回答
441 浏览

java - 为测试目的注入通用存根

我目前已经布置了以下类/接口。类型T表示从DataProvider实现返回的数据格式。我正在使用工厂,所以我不需要将类型信息附加到MyStreamingOutput. 我HK2用来注入DataProviderFactoryMyStreamingOutput.

这一切都很好。现在我正在尝试为 设置一个单元测试MyStreamingOutput,但我遇到了几个障碍。我为测试目的编写了以下附加类:

绑定发生在

我可以成功地将这个类注入到MyStreamingOutput中,但是它有一个编译器警告,因为getDataProvider()传递给工厂的实例不共享 所使用的类型信息。我无法向DataProviderFactoryStub类添加类型信息,因为它不再实现DataProviderFactory接口。我不想要接口上的类型信息,因为它是错误的——在 Stub 案例之外,工厂不应该关心DataProvider实例返回的类型。我非常想避免对queryandrowMapper参数使用设置器,因为在这种情况下我认为这是不好的设计。

我无法摆脱这样一种感觉,即我在泛型应用程序中遗漏了一些微妙的东西,或者在我的依赖注入应用程序中遗漏了一些明显的东西。解决此用例的正确方法是什么?这似乎是 DI 旨在解决的问题,但我不知道如何解决它。

0 投票
3 回答
4932 浏览

java - ServiceLocator 如何在 HK2 中自动找到 @Service 和 @Contact?

根据 HK2 @Service javadoc

放置在要自动添加到 hk2 ServiceLocator 的类上的注释。

我不知道如何ServiceLocator自动查找带注释的类。

测试服务

测试服务实现

主要的

结果总是null。我必须添加Descriptor以便ServiceLocator可以找到它。

如何让ServiceLocator自动查找带注释的类?我是不是误会了什么?

0 投票
1 回答
772 浏览

spring - jersey-spring3:将 Jersey OAuth 资源注入 Spring 托管 Bean

我正在尝试使用 Spring 托管 bean 插入 Jersey 2.7 资源。具体来说,我想像这样在 Spring bean中注入OAuth1Signature :


我尝试使用 HK2 Spring 集成文档中提供的说明:HK2 Spring Integration。在文档之后,我将其添加到我的 spring xml 配置中:


但是,当我启动我的 web 应用程序时,我不断收到此异常:


OAuth1Signature 文档指出 ServiceLocator 应该由 Jersey 2.7 使用的 HK2 框架注入。我对如何让 Spring 使用 jersey-spring3 桥为我实例化 OAuth1Signature 感到非常困惑,因为它似乎不知道服务定位器应该来自哪里。

我曾尝试搜索 StackOverflow 和其他 Jersey 留言板,但它们中的大多数都处理相反的用例(在 Jersey 资源中注入 spring bean)。对此的任何帮助将不胜感激!