【问题标题】:ContainerRequestContext not being injected into business logicContainerRequestContext 未注入业务逻辑
【发布时间】:2017-10-24 15:44:56
【问题描述】:

我正在使用 jaxrs 2.0 并尝试在 ContainerRequestContext 中填充一个对象并在业务逻辑中检索它。

我在 ContainerRequestContext 中填充对象,例如:

 @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {

        MyObject myObject = new MyObject(); 
        requestContext.setProperty("myObject", myObject);
}

我正在尝试在业务逻辑中阅读它:

@GET
@Path("/custom")
public String data(@Context ContainerRequestContext crc) {
    Object pco = crc.getProperty("myObject");
}

我正在使用以下示例中的这种方法:How to inject an object into jersey request context?

但是,我将 ContainerRequestContext crc 设为空。谁能告诉我我做错了什么?

【问题讨论】:

  • 这在 weblogic 12.2.1(完整的 Java EE 7)上对我来说很好。你能提供更多关于服务器的信息吗?@ApplicationPath
  • 我在使用 arquillian 进行测试时遇到了这个问题
  • 好的,您应该在描述中提供更多信息,因为它在测试期间发生的情况并不明显,因此问题不一样。我不太了解 Arquillian,所以我帮不了你。
  • 像这样注入 ContainerRequestContext 的能力,我认为是泽西岛特有的。因此,如果您的后端没有使用 Jersey,那么它可能无法正常工作。例如,带有 JBoss 的 arquillian 可能无法工作,因为 JBoss 使用 RESTEasy。 Glassfish 或 Weblogic 使用 Jersey。

标签: jax-rs servlet-filters


【解决方案1】:

我已经测试了问题中询问的确切代码,它与以下设置一样工作: spring-boot-starter-parent:2.3.4.RELEASE spring-boot-starter:从父级继承 spring-boot-starter-jersey:从父级继承 计算结果为 Spring 5.2.9.RELEASE,Jersey 2.30.1

Arquillian 和 Jersey 可以工作。

【讨论】:

  • 这没有提供问题的答案,请阅读tour
猜你喜欢
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
相关资源
最近更新 更多