Wildfly 8 / JAX-RS:当注入RequestScoped bean时,UriInfo为null

时间:2015-11-05 16:15:44

标签: java rest jax-rs cdi wildfly

所以我有一个RequestScoped bean,我试图将UriInfo注入到使用Context注释。该应用程序是一个基于JAX-RS的RESTful Web服务,在Wildfly 8上运行(随后很简单)。如果我将UriInfo注入资源本身,它将正确注入。如果我尝试将它注入任何注入的子节点,它将不会注入并最终为null。

这对我在Web Sphere 8.5上工作......但是现在它对Wildfly 8不起作用。任何想法?源代码位于https://github.com/rpg-maker-repo/rmmv-api。资源是“com.trinary.rpgmaker.resource.PluginResource”,我注入UriInfo的地方是“com.trinary.rpgmaker.service.LinkGenerator”。目前我已经删除了UriInfo的注入,并且实现它的代码已经注释掉了。我已经尝试了许多尝试注入它的方法,但没有一种方法可以工作。

3 个答案:

答案 0 :(得分:4)

是的,没有完全指定jaxrs-cdi集成,并且实现可以自由地将其增强到他们想要的程度。泽西岛(例如玻璃鱼)有一个非常强大的整合,你可以注入jaxrs' @Context into cdi beans(参见http://hnusfialovej.cz/2015/02/25/jersey-further-improves-cdi-integration/)。 Resteasy的(例如Wildfly)集成并不是那么简单,但你可以通过jaxrs提供者将UriInfo注入cdi bean(参见http://blog.christianbauer.name/Accessing%20request%20details%20with%20JAX-RS%20and%20CDI/)(在wfly 10上测试)。

答案 1 :(得分:1)

所以你有一个JAX-RS资源A,它注入一个CDI bean B,你想用@ContextUriInfo注入B

Java EE规范中是否有任何引用表明这应该有效?

我不这么认为。

@Context特定于JAX-RS,CDI 1.2规范中未提及。 CDI不支持它(与@PersistenceContext@Resource和其他传统注入不同。)

答案 2 :(得分:0)

您可以尝试使用访问Provider的{​​{1}}:

@Context

Altough我不确定这是不是很好的做法,我有以下问题: Using @Context in JAX-RS Provider to provide context information to CDI beans