为什么我的 Jersey JAX-RS 服务器会抛出关于不在 RequestScope 中的 IllegalStateException?

2023-12-26

我已经研究这个问题太久了,找到了解决方案,并希望为后续任何其他勇敢的 JAX-RS 冒险家提供反馈。

Error:

java.lang.IllegalStateException: Not inside a request scope.
    at com.google.common.base.Preconditions.checkState(Preconditions.java:149)
    at org.glassfish.jersey.process.internal.RequestScope.current(RequestScope.java:226)
    at org.glassfish.jersey.process.internal.RequestScope.findOrCreate(RequestScope.java:154)
    at org.jvnet.hk2.internal.MethodInterceptorImpl.intercept(MethodInterceptorImpl.java:80)
    at org.glassfish.jersey.internal.inject.UriInfoInjectee$$EnhancerByCGLIB$$4cfd1aab.toString(<generated>)
    at java.lang.String.valueOf(String.java:2854)
    at java.lang.StringBuilder.append(StringBuilder.java:128)
    at au.csiro.esa.authrest.rest.resource.PingResource.setUriInfo(PingResource.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1011)
    at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:816)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:801)
    at org.glassfish.jersey.gf.cdi.CdiComponentProvider$1.inject(CdiComponentProvider.java:316)
    at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:158)
    at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:103)
    at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:93)
    at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)
    at au.csiro.esa.authrest.rest.resource.PingResource$Proxy$_$$_WeldClientProxy.ping(Unknown Source)
....

它是一个简单的资源,标记为@RequestScoped

@Path("ping")
@RequestScoped
public class PingResource {

    protected UriInfo uriInfo;

    @Context
    public void setUriInfo(UriInfo uriInfo) {
        System.out.println("UserResource - set uriInfo:"+uriInfo);
        this.uriInfo = uriInfo;
    }

    @Inject
    @PropertiesFile(name = "app")
    Properties properties;

    @PermitAll
    @GET
    @Produces({ MediaType.TEXT_PLAIN })
    public Response ping() {
        System.out.println("Hit ping");
        return Response.ok().entity("Running version " + properties.getProperty("application.version")).build();
        // return Response.ok().entity("Running version 10").build();
    }
    ....

答案是@Context on the URIInfo。它必须是这样的:

public void setUriInfo(@Context UriInfo uriInfo) {
        System.out.println("UserResource - set uriInfo:"+uriInfo);
        this.uriInfo = uriInfo;
    }

or

@Context
protected UriInfo uriInfo;

看起来很明显不是吗!异常提到了 URIInfo 那么我的问题是什么?我不知道,我只能认为我看到了与此错误完全相同的内容,这是由其他原因引起的,并且我将一些内容更改为不正确的(就像您在顶部看到的大代码块中一样)。异常似乎是相同的,但并没有表明我实际上导致了不同的错误。

不管怎样,我夹着尾巴走开,并为我找到了问题的原因和解决方案而感到有些高兴。网上什么也没有,所以我想我会和大家分享这个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 Jersey JAX-RS 服务器会抛出关于不在 RequestScope 中的 IllegalStateException? 的相关文章

  • 给定“java.sql.SQLIntegrityConstraintViolationException”是否可以确定错误的列

    鉴于我有一个类型为 java sql SQLIntegrityConstraintViolationException 的异常 是否可以以编程方式确定错误的列 或多列 我问这个问题是因为我想将错误映射回客户端的数据模型以指示错误的字段 例如
  • “此 GPIO 引脚已存在:”第二次出现 GPIO 1 异常

    我正在 Raspberry pi 和 java 上工作 通过使用 pi4j 使 LED 闪烁 一切都已清除并且工作正常 LED 按照代码闪烁 但是当我第二次运行时 它会导致以下错误 我已经搜索了很多有很多相同的问题没有明确的答案如何解决 任
  • 如何在 Spring 中从 application.properties 重新加载 @Value 属性? [复制]

    这个问题在这里已经有答案了 我有一个spring boot应用 在run文件夹下 有一个额外的配置文件 dir config application properties 当应用程序启动时 它使用文件中的值并将它们注入到 Value my
  • 将数据传递到表单时的重定向后获取?

    我有几个场景 servlet 需要将数据从数据库检索到的记录传递到 JSP 中的表单 目前 我将此信息存储在请求中 使用 RequestDispatcher 转发到页面 一切都很好 然而 这不符合 PRG 模式 AFAIK 并且当然意味着刷
  • Java 7 中的 Beans Binding 将被什么取代?

    我在某处读到 我忘记了链接 Beans Binding 将不会成为 Java 7 的一部分 有人知道什么会取代它吗 另外 当前版本的 Java 中是否有 Bean 绑定的替代方案 我建议JGoodies 绑定 https binding d
  • 使用 TLS 证书 JDBC 连接到 Oracle 数据库

    我正在尝试用 Java 编写一个连接类来使用 JDBC 驱动程序连接到 Oracle 数据库 但我想保护用于连接到 Oracle 数据库的参数 例如 jdbcurl 用户名 密码 我必须使用 TLS 证书概念来连接到 Java 中的 Ora
  • Java - 直观地拖动摆动元素

    有没有类似的解决方案http allen sauer com com allen sauer gwt dnd demo DragDropDemo DragDropDemo html PaletteExample http allen sau
  • 为什么 Java 类加载器找不到我的接口?

    在下面的代码中 我使用动态生成一个类sun tools javac Main 我将使用反射创建此类的新实例 问题是 我想避免使用 Reflection 来调用我为此类定义的方法 因此我创建了一个 ProxyInvoker 来引用我在项目中定
  • 在 Graal.js 中使用 java 类

    使用 Graal js 如何将 java 类导入到 JS 脚本中 以下代码适用于 Nashorn JJS 但不适用于 Graal js 因为没有Java type 在graal中 我需要在某个时候调用truffle吗 var ArrayLi
  • 使用 TestRestTemplate 和 MockRestServiceServer 时,解析异常而不是实体列表不起作用

    我有一个简单的控制器 CODE https github com joergi tryouts blob main kotlin mockrestserver src main kotlin io joergi kotlinmockrest
  • Java:字符串连接和变量替换的最佳实践[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在 Java 中连接字符串和添加变量值的方法有太多 我应该如何选择一个 优点 缺点 最佳用例等 MessageFormat forma
  • Java - 在特定日期执行方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在每年的特定日期执行一个方法 我该如何在java中执行此操作 Thanks Chris 按优先顺序排列 The Quartz htt
  • maven默认过滤器目录的好处[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近我发现了maven资源过滤并在文档中看到了一条注释 标准目录布局src main filters 资源过滤器文件 我注意到maven不搜索声
  • Java 有现成的时钟同步解决方案吗?

    我们有一个大型的高性能软件系统 它由多个交互的 Java 进程 不是 EJB 组成 每个进程可以在同一台机器上 也可以在不同的机器上 某些事件在一个进程中生成 然后以不同的方式传播到其他进程以进行进一步处理等 出于基准测试的目的 我们需要创
  • 我们还需要迭代器设计模式吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在Android中创建自定义按钮类

    我正在尝试为我的 Android 应用程序创建自定义按钮类 public class TicTacButton extends Button 我已经在里面设置了所有构造函数TicTacButton并创建了自定义方法和属性 在我的主要活动中
  • 如何使用 Java 到 TestRail 的 API 将测试用例添加到现有测试运行中?

    我在执行期间创建了一个测试运行 我想在它们开始执行的同时添加测试用例 如果测试用例尚不存在 则已创建 并且该测试用例应该与其他测试用例一起添加到现有的测试运行中 我尝试过使用setCaseIds在运行期间和更新运行之后 但这会覆盖现有的运行
  • 使用 Maven 将值附加到文件中

    我想在文件末尾附加一个值 但我无法确定要使用哪个插件 例子 我要附加的值 myValue file value1 value2 myValue 追加后 我知道我可以使用 antrun plugin 来做到这一点 但是可以使用 Maven 插
  • JVM 调试端口 7779 正在使用

    我正在使用 RAD 8 当我在调试模式下启动服务器时 它会显示一条错误消息 指出JVM debug port 7779 is in use 我多次遇到这个问题 因为我知道 RAD 使用了这个端口 所以我不得不停止这个过程窗口任务管理器 gt
  • 数组所有可能的组合

    我有一个字符串数组 ted williams golden voice radio 我希望这些关键字的所有可能组合采用以下形式 ted williams golden voice radio ted williams ted golden

随机推荐

  • 如何在 SSIS 中的执行 SQL 任务中使用参数映射?

    我正在尝试检索的值Key通过 SSIS 中的简单 select 语句从表中获取Execute SQL Task 但没有运气找出这个错误 我使用了一个字符串数据类型的输入变量 并在参数映射中使用了该变量Execute SQL Task 执行查
  • 具有墓碑的哈希表的负载因子

    那么问题来了 在计算哈希表的负载因子时是否应该包括墓碑 我认为 考虑到负载系数是用来确定何时扩展容量的 所以不应该包括墓碑 一个明显的例子是 如果您几乎填充然后删除哈希表中的每个值 这里的插入非常容易 没有碰撞 所以我相信负载因子不应该包括
  • laravel phpunit 测试与 api 令牌身份验证

    如何在 phpunit 中添加授权标头 我正在测试需要 api token 的 json api laravel 文档提供了actingAs 方法 但这在我的情况下不起作用 因为 api 令牌与用户表不直接相关 EDIT public fu
  • 无法从 Objective-C 视图控制器访问 Swift var - iOS

    我有一个带有 Objective C 和基于 Swift 的视图控制器的应用程序 我正在以编程方式从我的一个基于 Objective C 的视图控制器之一打开一个基于 Swift 的视图控制器 我遇到的问题是我无法从 Objective C
  • 返回带有准备好的语句的时间戳

    我有一个自动生成的时间戳 每次在 mysql 表中插入或更新记录时都会创建该时间戳 有没有办法以类似于我使用密钥持有者返回新创建的 id 的方式返回此时间戳 KeyHolder keyHolder new GeneratedKeyHolde
  • Liferay集群[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道有关在 Glassfish 中安装 Liferay 集群的分步教程吗 谷歌给我找到了这篇文章 名为
  • Android布局动画在ImageView上从下到上和从上到下单击

    我在 Android 中创建了一个视图 我需要从下到上对其进行动画处理 反之亦然 当我点击ImageView我需要制作完整的动画RelativeLayout从下到上 就成功了 但是当我再次点击ImageView而且它并没有向下移动 另外 当
  • Morris.js 条形图未渲染悬停在文本上

    我正在使用 Morris js 条形图 由于某种原因 本应出现在 HOVER OVER 上的数字列在左下角 有人知道为什么吗 如果没有任何代码 很难给出一个好的答案 但是 它可能与您的 CSS 文件有关 莫里斯用它来放置胡佛 CSS mor
  • 我如何增加 inputAccessoryView 的高度

    我在这个问题上花了几天时间 但没有看到解决方案 我有一个inputAccessoryView其中包括一个UIView含有一个textView和两个按钮 的行为inputAccessoryView符合预期 并且在除一种情况外的所有情况下都工作
  • 打开 .exe 并通过 Python 子进程向其传递命令?

    所以我的 exe 程序已打开 但我想从 python 脚本将字符串传递给它 我像这样打开exe import subprocess p subprocess Popen E Work my exe shell True let user f
  • Android:无法让 YouTube Player API 在片段内工作

    我正在尝试让我的应用程序在片段中播放 YouTube 视频 如下所示本官方文档 https developers google com youtube android player reference com google android
  • 如何使用 jQuery 检查文本字段值与数组中的单词?

    我的数组有字符串值 var bannedWords cat dog test 我的文本输入字段检查该值是否包含数组中的单词 var title j edit content val if j inArray title bannedWord
  • 返回层次结构中第 N 级的类别名称(parentId -1 的类别位于第 1 级)

    数据样本 WITH sample data AS SELECT CategoryId ParentCategoryId Name Keywords FROM VALUES 100 1 business Money 200 1 tutorin
  • 托管目标代码需要“\clr”选项:错误

    当我尝试批量构建项目时 在启用 clr 运行时支持时遇到此错误 我的项目可以毫无问题地运行 并且只有当我尝试进行批量构建时才会收到此错误 我在 google 中进行了大量搜索 但大多数结果都是关于启用 clr 选项 我想知道如何解决这个问题
  • 在 ASP.NET MVC5 中绑定 @Html.DropDownListFor 的最佳方法是什么?

    我要绑定 Html DropDownListFor from Model不使用数据Viewbag并查看网络上的许多不同示例 但大部分都用Viewbag或扩展方法 我想要一个更好的方法来解决这个问题 我尝试了以下方法 但似乎不起作用 Html
  • Linspace 与 Range

    我想知道什么是更好的风格 更高效 x linspace 1 1 100 or x 1 0 01 1 正如奥利 查尔斯沃斯提到的 linspace你划分区间 a b into N点 而与 形式 你走出a以指定的步长 默认 1 直到达到b 要记
  • 防止 Javascript 和 XSS 攻击

    我正在对我的网站进行 xss 防护 防止 javascript 和 xss 攻击 它是用 ASP NET Webforms 编写的 我想测试的主要部分是一个具有文本框 附加有tinyMCE 的用户控件 用户可以通过在此文本框中写入内容来将故
  • 为什么我在 macOS 上收到“没有此类文件或目录”错误?

    使用以下代码 fileName Data all earthquakes csv with open fileName rb as csv file attrHeaderRow csv file readline strip 我收到以下错误
  • 在 Android 中使用 Google Engine 进行文本转语音

    我正在 Android 中开发一个简单的应用程序 我在 TextToSpeech 方面遇到问题 应用程序必须使用 TextToSpeech 来发音字母和数字 但有一个问题 默认情况下设备使用 PicoTTS 我希望他们被迫使用 google
  • 为什么我的 Jersey JAX-RS 服务器会抛出关于不在 RequestScope 中的 IllegalStateException?

    我已经研究这个问题太久了 找到了解决方案 并希望为后续任何其他勇敢的 JAX RS 冒险家提供反馈 Error java lang IllegalStateException Not inside a request scope at co