我正在使用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上运行时没有问题,当我尝试将它移动到野生/重新安装时出现问题。
有什么想法吗?
答案 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标头。错误肯定会引起误解。