【问题标题】:RESTEASY003880: Unable to find contextual data of type: javax.servlet.http.HttpServletRequestRESTEASY003880:无法找到类型的上下文数据:javax.servlet.http.HttpServletRequest
【发布时间】:2023-02-16 04:51:11
【问题描述】:

嗨,当我试图在浏览器上打开我的应用程序的登录页面时,我遇到了这个异常。 P.S:打开jdk zulu 11和wildfly 24进行部署。

org.jboss.resteasy.spi.LoggableFailure: RESTEASY003880: Unable to find contextual data of type: javax.servlet.http.HttpServletRequest
    at org.jboss.resteasy.resteasy-jaxrs@3.15.1.Final//org.jboss.resteasy.core.ContextParameterInjector$GenericDelegatingProxy.invoke(ContextParameterInjector.java:77)
    at javax.servlet.api@2.0.0.Final//com.sun.proxy.$Proxy163.getSession(Unknown Source)
    at deployment.demo.ear.rest.war//com.demoapp.demo.rest.resources.Myclass.init(Myclass.java:107)

【问题讨论】:

  • 当调用 @PostConstruct 时,请求也有可能不可用。
  • @JamesR.Perkins 如何处理这种情况。
  • 你想处理什么情况?你的最终目标是什么?

标签: java java-8 jboss wildfly java-11


【解决方案1】:

根据我的经验,@Context 是在每个方法的基础上设置的。更像:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response myMethod(String someString, @Context HttpServletRequest request) {

通过这种方式,HttpServletRequest 是基于方法设置的,而不是基于类的。我认为您不希望在类级别使用它,就好像该类有很多方法一样,这些方法不应该共享相同的HttpServletRequest

【讨论】:

  • 此代码适用于 jdk8 和 wildlfy10。 ,但在 jdk11 和 wildfly24 上,它抛出此异常。
  • 我在 Wildfly 26 和 Java 11 上运行了这个确切的代码——你能分享这个异常吗?
  • 看起来你还在做同样的事情。请创建一个可重现的示例。
  • 你不能 - 正如我所指出的那样,这是一种方法。 HttpServletRequest 只在有请求进来的时候存在,在你init的时候是不存在的。
【解决方案2】:

检查您的 Web-inf 目录中是否有 beans.xml。然后,删除并再次部署。

【讨论】:

    猜你喜欢
    • 2014-07-03
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2022-12-23
    • 2014-11-17
    • 1970-01-01
    相关资源
    最近更新 更多