与实体对象一起使用时,ResponseBuilder 不起作用

2024-01-17

我正在尝试使用responsebuilder 创建响应。 当我在实体中传递字符串时,它工作正常,但是当我传递一些错误类时,它不起作用。

这是代码

1)工作正常

Response.status(400).entity("test").build();

2)不工作

Response.status(400).entity(new MyCustomExceptions(400,"My bad request")).build();

使用上面的代码我收到错误

org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
SEVERE: MessageBodyWriter not found for media type=text/plain

当我使用上面的代码调用此服务时,我收到 500 错误而不是 400。但在第一种情况下,我收到正确的 400 错误。

  • 只是想了解如果我将对象传递给实体那么我需要 重写类 MyCustomExceptions 中的某些方法?
  • 如何从 MyCustomExceptions 对象创建响应?
  • 如果我将字符串传递给实体,它就可以正常工作。为什么?

将异常映射到 HTTP 错误响应

JAX-RS 允许您定义 Java 异常到 HTTP 错误响应的直接映射。

通过扩展WebApplicationException https://stackoverflow.com/a/33708222/1426227,您可以创建特定于应用程序的异常,以使用状态代码和可选消息作为响应正文来构建 HTTP 响应。

考虑到这一点,而不是返回Response http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Response.html,你可以抛出一个BadRequestException http://docs.oracle.com/javaee/7/api/javax/ws/rs/BadRequestException.html这延伸了WebApplicationException https://stackoverflow.com/a/33708222/1426227并将被映射到带有状态代码的 HTTP 响应400 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1:

throw new BadRequestException("My bad request");

有关 JAX-RS 中错误处理的更多详细信息,请参阅此answer https://stackoverflow.com/a/33708222/1426227.

的子类WebApplicationException

为了方便起见,WebApplicationException https://stackoverflow.com/a/33708222/1426227目前由以下异常扩展(并且可以扩展它们以创建您自己的异常):

  • RedirectionException http://docs.oracle.com/javaee/7/api/javax/ws/rs/RedirectionException.html: 3xx https://www.rfc-editor.org/rfc/rfc7231#section-6.4状态码为重定向 errors
  • ClientErrorException http://docs.oracle.com/javaee/7/api/javax/ws/rs/ClientErrorException.html: 4xx https://www.rfc-editor.org/rfc/rfc7231#section-6.5 status codes for Client errors
    • BadRequestException http://docs.oracle.com/javaee/7/api/javax/ws/rs/BadRequestException.html: 400 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1错误的请求
    • ForbiddenException http://docs.oracle.com/javaee/7/api/javax/ws/rs/ForbiddenException.html: 403 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.3禁止
    • NotAcceptableException http://docs.oracle.com/javaee/7/api/javax/ws/rs/NotAcceptableException.html: 406 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.6不能接受的
    • NotAllowedException http://docs.oracle.com/javaee/7/api/javax/ws/rs/NotAllowedException.html: 405 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.5不允许的方法
    • NotAuthorizedException http://docs.oracle.com/javaee/7/api/javax/ws/rs/NotAuthorizedException.html: 401 https://www.rfc-editor.org/rfc/rfc7235#section-3.1未经授权
    • NotFoundException http://docs.oracle.com/javaee/7/api/javax/ws/rs/NotFoundException.html: 404 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.4未找到
    • NotSupportedException http://docs.oracle.com/javaee/7/api/javax/ws/rs/NotSupportedException.html: 415 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.13不支持的媒体类型
  • ServerErrorException http://docs.oracle.com/javaee/7/api/javax/ws/rs/RedirectionException.html: 5xx https://www.rfc-editor.org/rfc/rfc7231#section-6.6 status codes for Server errors
    • InternalServerErrorException http://docs.oracle.com/javaee/7/api/javax/ws/rs/InternalServerErrorException.html: 500 https://www.rfc-editor.org/rfc/rfc7231#section-6.6.1内部服务器错误
    • ServiceUnavailableException http://docs.oracle.com/javaee/7/api/javax/ws/rs/ServiceUnavailableException.html: 503 https://www.rfc-editor.org/rfc/rfc7231#section-6.6.4暂停服务
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与实体对象一起使用时,ResponseBuilder 不起作用 的相关文章

  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • 如何避免 ArrayIndexOutOfBoundsException 或 IndexOutOfBoundsException? [复制]

    这个问题在这里已经有答案了 如果你的问题是我得到了java lang ArrayIndexOutOfBoundsException在我的代码中 我不明白为什么会发生这种情况 这意味着什么以及如何避免它 这应该是最全面的典范 https me
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数

随机推荐

  • 在java中从数据库中检索值

    我正在制作一个程序 从我创建的数据库中检索输入的数据 字段值 但当我运行它时 输出始终为空 我想知道怎么了 这是我的代码 import java sql public class GuestsInfo private String firs
  • 如何删除 Windows 上的 dotnet 运行时?

    我找到了命令dotnet list runtimes它为我输出 缩写 Microsoft AspNetCore All 2 1 15 C Program Files dotnet shared Microsoft AspNetCore Al
  • 如何挂钩 MySQL 查询为 true 时触发的事件?

    如何创建一个 PHP 脚本来一致地检查 MySQL 行 如果一组查询匹配 它就会启动一个事件 例如发送电子邮件 例如 在查询匹配时Fire开始电子邮件 To email protected cdn cgi l email protectio
  • 带有数组或 JSON 数据的 D3 堆积图

    我想创建一个堆积条形图 例如http bl ocks org mbostock 3886208 http bl ocks org mbostock 3886208 但我不想使用 CSV 文件 如何使用数组或 JSON 数据创建堆积图 在 c
  • 如何在 C# 3.5 中取消异步委托?

    我上下搜索了谷歌 但几乎找不到有关该主题的任何正确信息 我想做的是这样的 用户在文本框中键入单个搜索字符串 我等待 0 5 秒 然后开始 BeginInvoke 指向搜索方法的委托 如果用户再次键入一个字符 我想取消搜索并使用键入的新字符串
  • 使用大叶和熊猫的等值线图

    我在用folium创建一组国家的等值区域地图 我正在关注文档 http folium readthedocs org en latest choropleth examples 然而 由于某种原因 地图没有显示任何阴影 我正在使用来自自然地
  • 删除文本时,IE 中的 jQuery .live('input) 不起作用

    基于这个问题根据计数器的值淡入 淡出文本 https stackoverflow com questions 10780756 fade in out text based upon value of counter 我有以下标记
  • 更改 Android 上的状态栏字体颜色

    有没有办法改变 Android 上的状态栏字体和图标颜色 不讨论背景颜色 None
  • Silverlight:VisualStateManager.GetVisualStateGroups 没有,我怎样才能获得它们?

    我尝试过使用VisualStateManager GetVisualStateGroups in the OnAttached覆盖我的自定义行为 以及添加到的事件处理程序中AssociatedObject Loaded该行为中的事件 两次我
  • React Native 构建版本没有反映调试所做的更改(android)

    我对我的 React Native 应用程序进行了一些样式更改 调试中的一切看起来都很好 因此我尝试使用 react native run android variant release 运行发布变体 并且调试中没有出现任何更改 我确定我没
  • 等待信号,然后继续执行

    我正在尝试制作一个程序suspends它的执行直到信号到达 然后 信号到达后我只想我的代码从原来的地方继续执行 我不希望它执行函数处理程序或任何其他内容 有没有一种简单的方法可以做到这一点 我已经奋斗了一周左右 到处阅读 但没有设法获得完全
  • “无法上传。请重试。” Google Play 管理中心出现错误

    当我尝试将 Android App Bundle 上传到 Google Play Console 时 我收到一条通用错误消息 无法上传 请重试 我已经尝试过 确保我的versionName and versionCode在所有上传的工件中是
  • 显示具有重复的某些列的所有行

    假设我有以下 sql 表 objid firstname lastname active 1 test test 0 2 test test 1 3 test1 test1 1 4 test2 test2 0 5 test2 test2 0
  • 模板参数替换有惊喜吗?

    N3690 14 8 2 第 3 段有一个令人兴奋的例子 template
  • tinymce鼠标贴不起作用

    我想在tinymce中启用鼠标粘贴 当我点击粘贴时 它显示错误 剪切 粘贴 复制在 Firefox 中被禁用 我在他们的论坛上搜索了这个 http www tinymce com forum viewtopic php id 20637 h
  • 在函数内分配内存后使用双指针

    我正在使用 C 中的双指针 想知道是否创建一个初始化表的函数 当我尝试使用 InitStringTable 分配的内存时 它会在返回 main 时崩溃 我相信一个简单的解决方法是使 strTable 成为全局的 然后我相信它可以 但我不想这
  • OpenCV-Python cv2.CV_CAP_PROP_POS_FRAMES 错误

    目前 我使用的是opencv 3 1 0 在执行以下代码时遇到以下错误 post frame cap get cv2 CV CAP PROP POS FRAMES 我收到以下错误消息 文件 videoOperation py 第 37 行
  • jQuery 模态和深度链接

    我目前有一个画廊 当您单击缩略图时 它会打开一个模式弹出窗口 我想做的是能够专门为模式生成一个唯一的链接 即 www mywebite com link1 它通过 ajax 加载其内容 如果有人要发送这个独特的模式链接并将其发送给某人 然后
  • NSDate 格式化程序

    不幸的是 我尝试将字符串转换为 NSDATE 但没有成功 2010 年 10 月 22 日星期五 11 26 45 美国东部时间 我知道格式化选项 http sree cc objective c nsdate format string
  • 与实体对象一起使用时,ResponseBuilder 不起作用

    我正在尝试使用responsebuilder 创建响应 当我在实体中传递字符串时 它工作正常 但是当我传递一些错误类时 它不起作用 这是代码 1 工作正常 Response status 400 entity test build 2 不工