问题标签 [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.
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 吗?
java - HK2 注释未处理
我正在通过 Jersey 使用 HK2,并希望让 @Immediate 服务正常工作。在此过程中,我注意到(看起来)我的服务的所有注释都没有被注册。例如,在启动我的 ServiceLocator 并查看使用@Singleton 注释的服务的描述符之后,它仍然设置为@PerLookup。我启动应用程序处理程序的代码如下:
我的活页夹注册了这样的服务:
在此之后立即查看我的 ServiceLocator,我发现范围没有从类中拉出(仍然是 @PerLookup)。是否需要指定其他内容来告诉 HK2 解析类注释?这似乎是一个非常标准的用例,所以我一定遗漏了一些东西。
java - 当 bean 不是通过 hk2 创建时,@inject 不起作用
我一直在尝试向合同注入服务:
但是 categoryDAO 为空。
我什至尝试绑定它:
但它仍然为空。
我像这样初始化MyCategoryManager
with Reflections 框架:
google-app-engine - 在 appengine 上升级到球衣 2.6 后出现 NullPointerException
我有一个在 appengine 上运行 jersey 的 java 应用程序。我最近升级到 jersey 2.6 以使用新的 HK2 AOP 功能。由于我已完成此升级,因此在通过球衣请求 Web 服务时遇到了一些问题。服务器运行良好一段时间,然后我对每个请求都有异常,修复错误的唯一方法是在 appengine 上重新部署应用程序。我不更改任何代码行,我只是重新部署应用程序。升级到 jersey 2.6 并使用 HK2 AOP 实现 2 个 methodInterceptors 后出现此问题。这是出现错误时我收到的每个请求的堆栈:
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 实际上是相同的。对于真实应用程序的依赖注入,我有:
但我不知道如何为测试提供模拟。有人知道怎么做吗?
dependency-injection - 使用内置 Jersey 依赖注入在 Jersey 2 中创建简单的单例类时遇到问题
我无法使用 Jersey 2 (2.7) 和仅 Jersey 的内置 HK2 依赖注入来实现一个非常基本的单例类。我在Tomcat上运行它。
我的目标是创建一个支持类的单例实例,供各种 Web 服务方法使用。我在构造函数注入、方法注入和注释类成员之间没有强烈的偏好(如下所示)。
这是我的单身课程:
这是我的应用程序类:
这是我的 Provider/ContextResolver 类:
网页.xml:
我打算注入 JustOne 类的单例实例的资源:
在泽西岛部署/初始化战争时会发出此警告:
当我调用这个网络服务时,我得到的错误:
所以,我明白了:hk2 没有获得足够的信息来创建/绑定 JustOne 实例和/或查找/使用我的 JustOneProvider。我确定我缺少一些基本的东西。任何指导将不胜感激。
java - 为测试目的注入通用存根
我目前已经布置了以下类/接口。类型T
表示从DataProvider
实现返回的数据格式。我正在使用工厂,所以我不需要将类型信息附加到MyStreamingOutput
. 我HK2
用来注入DataProviderFactory
到MyStreamingOutput
.
这一切都很好。现在我正在尝试为 设置一个单元测试MyStreamingOutput
,但我遇到了几个障碍。我为测试目的编写了以下附加类:
绑定发生在
我可以成功地将这个类注入到MyStreamingOutput
中,但是它有一个编译器警告,因为getDataProvider()
传递给工厂的实例不共享 所使用的类型信息。我无法向DataProviderFactoryStub
类添加类型信息,因为它不再实现DataProviderFactory
接口。我不想要接口上的类型信息,因为它是错误的——在 Stub 案例之外,工厂不应该关心DataProvider
实例返回的类型。我非常想避免对query
androwMapper
参数使用设置器,因为在这种情况下我认为这是不好的设计。
我无法摆脱这样一种感觉,即我在泛型应用程序中遗漏了一些微妙的东西,或者在我的依赖注入应用程序中遗漏了一些明显的东西。解决此用例的正确方法是什么?这似乎是 DI 旨在解决的问题,但我不知道如何解决它。
java - ServiceLocator 如何在 HK2 中自动找到 @Service 和 @Contact?
根据 HK2 @Service javadoc
放置在要自动添加到 hk2 ServiceLocator 的类上的注释。
我不知道如何ServiceLocator
自动查找带注释的类。
测试服务
测试服务实现
主要的
结果总是null
。我必须添加Descriptor
以便ServiceLocator
可以找到它。
如何让ServiceLocator
自动查找带注释的类?我是不是误会了什么?
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)。对此的任何帮助将不胜感激!