找不到类型的上下文数据:java.ws.rs.container.ContainerRequest(Wildfly 错误)
Posted
技术标签:
【中文标题】找不到类型的上下文数据:java.ws.rs.container.ContainerRequest(Wildfly 错误)【英文标题】:Unable to find contextual data of type: java.ws.rs.container.ContainerRequest (Wildfly error) 【发布时间】:2015-12-02 21:02:25 【问题描述】:我正在使用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'不为空。
当我尝试检索属性时,我得到了错误:
executing GET /complaints/view/products:
org.jboss.resteasy.spi.LoggableFailure: Unable to find contextual data
of type: javax.ws.rs.container.ContainerRequestContext
请注意,该应用程序在 glassfish/jersey 上运行没有问题,当我尝试将其移动到 wildfly/resteasy 时出现问题。
有什么想法吗?
【问题讨论】:
【参考方案1】:我也有错误
RESTEASY003880: Unable to find contextual data of type: javax.ws.rs.core.HttpHeaders
这是由于访问不同线程中的标头引起的。
希望在谷歌搜索问题时答案会有所帮助。
【讨论】:
在我的情况下,我必须提取所有多格式数据并将其存储在局部变量中并将这些变量传递给新线程。如果我将多格式数据直接传递给新线程,我会收到此错误【参考方案2】:我正在回答我自己的问题,因为似乎 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 代替,我之前在其中添加了我需要的所有信息。
【讨论】:
【参考方案3】:就我而言,它只是一个无效的 Content-Type 标头。错误肯定具有误导性。
【讨论】:
以上是关于找不到类型的上下文数据:java.ws.rs.container.ContainerRequest(Wildfly 错误)的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Android - 找不到类型或命名空间“上下文”
实体框架 enable-migrations 在程序集中找不到上下文类型
Code-First,当我进行启用迁移时,我得到“在程序集'DOC'中找不到上下文类型”
服务器找不到 java:comp/env/jdbc/my_db 数据源...在上下文“java:”中找不到名称 comp/env/jdbc