问题标签 [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 - REST API using Jersey 2
I would like to implement a REST API using Jersey 2 and I would like to have resources separated into interfaces and their implementations like e.g.:
I do not have any luck getting the resources exposed though. For the hello resource just mentioned I was hoping that the following would be enough:
web.xml:
pom.xml:
But when hitting
I get a 404 response:
Input will be greatly appreciated :) Thanks.
New discovery: it works with this:
java - 在 Jersey 2 中将本金注入资源方法
我正在使用 Jersey 2 开发一个 REST API,目前我正在尝试通过使用类似于 Dropwizard 中的 @Auth 的注释来合并基本身份验证。和
hello 资源调用应该被一些代码拦截,这些代码使用 Authorization HTTP 请求标头中传递的凭据执行基本身份验证,并在成功时将主体注入方法主体参数。
我已经开始创建一个@Auth 解析器,见下文,但我看不到如何从其中访问 Authorization HTTP 请求标头?
如何解决这个问题?:)
java - Jersey 2 中的两个自定义注入注解
为了让两个自定义注入注释在 Jersey 2 中共存,我应该如何进行 ValueFactoryProvider 绑定?下面我包含了我当前方法的一个示例,您可以看到 Hello 注释注入“隐藏”了 SmallTalk 注释注入。
你好注释:
SmallTalk 注释:
你好注释解析器:
SmallTalk 注释解析器:
资源配置:
使用两种注入注解的资源:
请求资源时的结果 - 应该是"Hello! Nice weather."
:
java - 针对 Jersey 2 中的 METHOD 和 PARAMETER 的自定义注释
我已经成功地用 target 实现了一个自定义注入注解PARAMETER
。我不明白我是如何让我的注释支持目标METHOD
的?
这是我的示例代码:
你好注释:
你好注释解析器:
你好资源:
当我打
我得到一个你好!无论小时是否在禁止间隔内,都返回。
java - 什么对应于 Jersey 2 中 HK2 中的 asEagerSingleton?
我正在使用 Jersey 2 开发一个 REST API,我需要在启动时实例化我的一些类,而不仅仅是在某些资源请求触发它时。
所以我要问的是:我如何实现SomethingImpl
在服务器启动时创建下面定义的实例,而不仅仅是在有人点击某物资源时创建?在 Guice 我会使用.asEagerSingleton()
.
应用:
某物:
一些资源:
cdi - JaxRS 应用程序中的 CDI HK2 错误
我为 Glassfish 4 编写了一个 JaxRS 应用程序。它使用 Jackson 2。我可以毫无问题地构建它,但是当我部署它时,我得到以下 4 个错误中的一个或多个。
和/或
和/或
和/或
据我所知,当 glassfish 尝试两次加载一个类时可能会引发最后一个异常?
我上传了我的直接和间接依赖项的屏幕截图。 http://i.stack.imgur.com/HEtb1.png
关于其他解决方案,我尝试添加<scope>provided</scope>
到包含这些类的包中。--> 没有成功
你有什么主意吗?
编辑1:
我的资源配置:
启用杰克逊 2:
很多这样的实体:
然后我有很多这样的DAO:
还有很多这样的资源:
编辑2:
我创建了一个新的测试项目。一旦我向 org.glassfish.jersey.server 添加依赖项,我就会收到错误消息。
编辑 3:
我做了一个错误的测试应用程序:
http://www.file-upload.net/download-8459084/testApplication_20131229.rar.html
jersey - 泽西岛和 HK2 服务定位器
我正在尝试在 Application 构造函数(从 ResourceConfig 继承的东西)中初始化我的 Jersey 应用程序中的一些组件。看起来像这样
当我尝试在任何时候使用定位器时,我仍然无法使用 locator.create(MyThing.class) 方法创建我在 AbstractBinder 中注册的事物的实例。
我确定它们绑定正确,因为它们通过@inject 字段注释正确注入到我的资源类中。
不同之处在于 Jersey/HK2 框架正在实例化我的资源类(正如预期的那样,因为它们在我的包扫描路径中),但我似乎无法通过代码利用 ServiceLocator。
我的最终目标是在具有@Inject 属性时注入其他非球衣类,例如。我有一个需要注入配置的数据库访问层的工作类。我想说
并注入。
我如何获得真正的 ServiceLocator,它将注入我已经注册/绑定到我的 Binder 的所有内容?(或者我应该使用 ServiceLocator 以外的东西吗?)
java - HK2 和带有构造函数参数的 Impls
我使用 HK2 作为 Jersey RESTful API 的一部分。我在一个多租户系统中工作,在我的大多数 API 调用中,租户是一个路径参数。我还有几个 DAO,它们目前在其构造函数中接受tenantId,例如:
我想使用 HK2 将我的 DAO 提供给我的应用程序的其他层。这样做的正确方法是什么?
将 DAO 更改为使用 setter 而不是构造函数参数。只有.. ick。这
tenantId
是 DAO 所需状态的一部分。添加一个抽象层。创建
<interface>MapperFactory
andMapperFactoryImpl
,它有一个无参数构造函数和一堆 getter,例如getWidgetMapper
andgetGizmoMapper
。只有..这似乎很麻烦。我宁愿不必维护这些额外的类。HK2 是否有一些神奇的方法可以在运行时将该 int 值注入 WidgetMapper 构造函数?然后我可以将tenantId 注入映射器,并将映射器注入我的其他类。
?? 其他HK2魔术?
memory - 以 jersey 作为实现和 hk2 的 jax-rs 客户端 api 产生内存泄漏
我有一个带有 Spring 2.5 上下文的简单 serlvet 应用程序。
由于 jax-rs 客户端推荐(https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/),我将客户端对象作为 Spring 单例 bean,然后创建应该是的 WebResource 对象很容易被 gc 冲洗掉。
关闭是使用 Spring 的 Disposable Bean 机制完成的(已调试,方法 get 被调用)。
几天后,我的应用程序内存不足。使用内存分析器,我可以看到我有来自 org.jvnet.hk2.internal.SystemDescriptor 的 500k 个实例,这及时导致了 PermGem。
你是否也遇到过这个问题?
谢谢!