问题标签 [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.
glassfish - Weld和HK2是什么关系
这可能是一个愚蠢的问题,但我对此感到困惑,我在任何地方都找不到任何明确的解释。
HK2 是一个实现 JS330 的依赖注入框架,它是 Glassfish V3 和 V4 的基础。据我所见,它被泽西岛使用
Weld 是 CDI 的参考实现,它又是一个依赖注入框架,也可以在 Glassfish 中使用?
所以我的问题是这些
- 它们是同一规范的不同实现吗?
- 它们是不同规格的实现吗?
- 在什么情况下我应该使用其中一种?
我知道这些问题源于我对 Java EE 整个生态系统的了解不足,但任何答案都将不胜感激
dependency-injection - CDI 和 HK2 不合作
我不确定我是否理解这两个如何使用@Inject 进行注入的确切方式,但我最近开发了一个应用程序,在开发的第一阶段,我使用 HK2 的 @inject 使用依赖注入并使用抽象绑定器绑定资源,它工作得很好。然后我想再注入一个价值。我需要使用@Inject 注入一个基本的字符串值,并且这个值是从一个用@Produces 注释的方法中获得的。但是当我这样做时,我得到了这个错误。
我在很多地方读到过,很多人认为 CDI 和 HK2 在合作时遇到了一些问题。我无法解决这个问题。
当我在两个不同的独立程序中尝试上述场景时,它们运行良好。但是当我集成它们时,我收到上述错误消息。
这是我在 java 的 jira 中发现的: https ://java.net/jira/browse/GLASSFISH-20597
我的例子是:
我在抽象活页夹中绑定了 b 类
这工作得很好。
但是当我尝试在同一系统中将@Inject 添加到 String 的以下概念时,它会因上述异常而崩溃
生产者类
jersey - 注入通过 hk2+jersey 创建的对象返回 null
我有以下资源类
以下是我对 UserAuthorizationRepository 的实现
我已将以下活页夹注册到 ResourceConfig
在此之后,我的资源类中的 userRepository 绑定正确,但是 UserAuthorizationRepositoryImpl 中的 userIdToUserNameTable 为空。
有谁知道原因?先感谢您!
java - 如何在 Jersey 2.12 中获取 HK2 ServiceLocator?
我想创建一个不作为资源或服务参与 Jersey 的类的单例实例,但希望从 Jersey ServiceLocator 注入它的依赖项。
我可以在我的 ResourceConfig 构造函数中手动注册这个类,然后将 ResourceConfig 传递给 Grizzly 工厂方法,如下所示:
剩下的问题是如何获取对 Jersey ServiceLocator 的引用,以便我可以调用 createAndInitialize() 来获取注入依赖项的对象。我在以前的 Jersey 版本中看到有需要 ApplicationHandler 的构造函数变体,它当然提供对服务定位器的访问(我如何初始化是另一回事)。您还可以看到我已经尝试传入父 ServiceLocator 但当然解决方案发生在子 -> 父定位器而不是另一个方向,因此向父对象询问我的对象失败,因为 Jersey @Contract 和 @Service 类型不是在这里可见。
我需要使用 GrizzlyHttpServerFactory 以外的东西吗?我是否放弃并手动连接我的单例依赖项?
java - 了解Java的注入框架HK2?
我正在将 OSGi 系统转换为非 OSGi 系统,并且我有一些过去由 OSGi 管理的服务。我正在尝试使用 HK2 在几个类中注入服务实现。
我创建了一个自定义注入注释,并InjectResolver
为它创建了一个。然后我扩展AbstractBinder
并使用该bind
方法将我的注释链接到我的自定义注入解析器。伟大的。
但是现在,我如何让系统使用这个活页夹?
如果我在 Jersey 中使用 HK2,我会在 Jersey 的ResoureConfig
. 但这不是泽西岛的应用程序。
如何告诉 Hk2 使用我的活页夹,以便它知道我的自定义注释?
谢谢!
jersey - 在 Jersey 中注册自定义 ResourceMethodInvocationHandler
我试图在它的 JSON 被解组后拦截一个资源调用。通过阅读一些论坛和帖子,我发现我可以通过实现org.glassfish.jersey.server.spi.internal.ResourceMethodInvocationHandlerProvider来做到这一点。这样做之后,我现在一直在尝试注册我的CustomResourceMethodInvocationHandler提供程序,以便 jersey/hk2 内部调用我重写的公共 InvocationHandler create(Invocable invocable)方法。任何帮助将非常感激!
java - 使用带有 Jersey 的定制工厂 HK2 DI
我在我的 Jersey 应用程序中使用 HK2 容器。我需要使用我的自定义工厂方法从 HK2 容器中获取注入的实例。例如 ,
这是我的代码:
我需要这样做的原因是有时,我手动分配具有依赖关系的类,因此每次使用 @Inject 都会返回 null。例如,如果我使用 new BusinessLogic() ,则带有 @Inject 的记录器为空。我还必须绑定业务逻辑并使用 IOC 才能获得 ILogge。
我需要这样的东西:
我需要使用 DependencyResolver 来获取我在 MyApplication 中注册的实例。
有什么建议么。提前致谢...
java - Jersey Hk2 注入 @Service 注释类
对于我的生活,我无法让 Jersey 与 hk2 自动发现 @Service 注释类并注入它们。我已尝试遵循有关堆栈溢出、球衣和 hk2 文档的所有建议,但仍然没有运气。我正在尝试将一个简单的 echo 服务注入到 Jersey 资源中。骨架是从 Jersey 的简单 webapp maven 原型生成的,我尝试对其进行扩展。这是我到目前为止所拥有的:
pom.xml
web.xml
my.package.jerseytest.application.Application
my.package.jerseytest.service.EchoService
my.package.jerseytest.resource.MyResource
我已经检查了抑制剂生成器确实运行并产生了它的输出,但是在运行 Tomcat 服务器 GETting 时,http://localhost:8080/sandbox/webapi/myresource
我得到了
有什么我想念的想法吗?我将不胜感激任何帮助 :(
注意!我知道
- ServiceLocator 如何在 HK2 中自动找到 @Service 和 @Contact?
- HK2 注释未处理
- https://hk2.java.net/inhabitant-generator.html
- https://hk2.java.net/2.2.0-b25/getting-started.html
- https://java.net/jira/browse/HK2-165
但他们没有帮助我...
java - 如何在 jersey 2.0 中使用 hk2 注入常量?
如何在球衣中使用 HK2 将常量注入某个类?有了Guice,我可以上一些课,比如
我会用类似的东西在注射器中配置它
HK2中的等价物(如果有的话)是多少?
java - 使用自定义 hk2 InjectionResolver 注入应用程序配置
有点像我之前的问题的跟进。我正在尝试使用 JSR-330 标准注释和与球衣捆绑的 HK2 框架注入应用程序配置数据。
理想情况下,我想InjectionResolver
为Named
注释创建一个自定义,它将在我将从其他地方读取的数据填充的对象中Map
查找所需的值。Properties
在我的第一次尝试中,我创建了一个Application
实例,例如
然后我的InjectionResolver
样子
我的问题是它application.getProperties()
是空的。知道有什么问题吗?另外,我可以绑定我的 Injector 的实例而不是绑定类吗?这样我就可以构建将我的Map
数据作为参数传递的实例。