无法找到类型的上下文数据:java.ws.rs.container.ContainerRequest(Wildfly错误)

时间:2015-09-07 10:25:30

标签: jax-rs wildfly resteasy

我正在使用wildfly 9.0.1.Final

我正在部署一个REST应用程序,其端点定义如下:

@GET
@Path("/view/products")
@Produces(MediaType.APPLICATION_JSON)
@CORSEnabled
@Protected
public String getConfiguredProducts(
    @Context ContainerRequestContext request) {
    if (request != null) {
        Integer companyId = (Integer) request.getProperty("company");
        if (companyId != null) {
             //do stuff
        }
    }
    // ... more staff
}

当应用程序运行时,将注入上下文,即“request”为非null。

当我尝试检索属性时,我得到了错误:

executing GET /complaints/view/products:        
org.jboss.resteasy.spi.LoggableFailure: Unable to find contextual data    
of type: javax.ws.rs.container.ContainerRequestContext

请注意,应用程序在glassfish / jersey上运行时没有问题,当我尝试将它移动到野生/重新安装时出现问题。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

我正在回答我自己的问题,因为似乎RestEasy不支持注入ContainerRequestContext,至少根据这个

https://docs.jboss.org/resteasy/docs/1.1.GA/userguide/html_single/#_Context

  

@Context注释允许您注入实例   javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo,   javax.ws.rs.core.Request,javax.servlet.HttpServletRequest,   javax.servlet.HttpServletResponse,javax.servlet.ServletConfig,   javax.servlet.ServletContext和javax.ws.rs.core.SecurityContext   对象。

我注入了一个javax.ws.rs.core.HttpHeaders,之前我已经添加了我需要的所有信息。

答案 1 :(得分:1)

我也有错误 RESTEASY003880: Unable to find contextual data of type: javax.ws.rs.core.HttpHeaders

这是由于在其他线程中访问标头引起的。

希望该问题的答案对您有所帮助。

答案 2 :(得分:0)

就我而言,它只是一个无效的Content-Type标头。错误肯定会引起误解。