使用 CXF 拦截器进行错误处理 - 更改响应消息

2024-03-24

我正在尝试处理来自后端的错误。这handleMessage()如果发生错误但内容是 XmlMessage 的实例,则调用。我想将其更改为我自己的响应 - 只需设置响应代码并添加一些消息。

我还没有找到任何合适的文档可以告诉我如何做到这一点......

这些示例适用于 REST,但我也想在 SOAP 中管理这个东西。

拦截器

public class ErrorHandlerInterceptor extends AbstractPhaseInterceptor<Message> {

    public ErrorHandlerInterceptor() {
        super(Phase.POST_LOGICAL);
    }

    @Override
    public void handleMessage(Message message) throws Fault {
        Response response = Response
            .status(Response.Status.BAD_REQUEST)
            .entity("HOW TO GET A MESSAGE FROM AN EXCEPTION IN HERE???")
            .build();
        message.getExchange().put(Response.class, response);
    }

}

上下文.xml

<bean id="errorHandlerInterceptor"
    class="cz.cvut.fit.wst.server.interceptor.ErrorHandlerInterceptor" />

<jaxrs:server address="/rest/">
    <jaxrs:serviceBeans>
        <ref bean="restService" />
    </jaxrs:serviceBeans>
    <jaxrs:outFaultInterceptors>
        <ref bean="errorHandlerInterceptor" />
    </jaxrs:outFaultInterceptors>
</jaxrs:server>

如果您使用 JAX-RS,为什么不设置异常映射器,然后使用该映射器来处理响应。

一个简单的例子:

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class MyExceptionMapper implements
        ExceptionMapper<MyException> {

    @Override
    public Response toResponse(MyException e) {
        return Response.status(Status.NOT_FOUND).build();
    }

}

然后,您需要通过添加以下内容在 jaxrs 服务中注册提供程序:

<jaxrs:providers>
    <bean class="com.blah.blah.blah.blah.MyExceptionMapper"/>  
</jaxrs:providers>

在上下文中的服务器配置中。这样您就可以完全访问异常,并可以从中获得您想要的任何内容。

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

使用 CXF 拦截器进行错误处理 - 更改响应消息 的相关文章

  • 如何使用 SLF4J 和 Log4j2 记录 FATAL(或任何自定义日志级别)

    我有那些具体的要求 需要能够登录FATAL level 需要使用SLF4J 需要使用Log4j2 现在 这是我的执行 final Logger logger LoggerFactory getLogger HelloWorld class
  • JavaEE 8 教程,在 hello1 项目上部署失败

    我正在尝试学习 Java EE 8 我遵循了官方指南https javaee github io tutorial https javaee github io tutorial 但我有这个问题 cargo maven2 plugin 1
  • JPanel透明背景和显示元素[重复]

    这个问题在这里已经有答案了 我插入一个背景图e 变成 aJPanel但一些界面元素消失了 以下 Java Swing 元素不会出现 标签标题 标签 usuario 标签 密码 按钮加速器 你能否使图像透明或元素不透明 setOpaque f
  • .java 和 .scala 类之间是否可能存在循环依赖?

    假设我在 java 文件中定义了类 A 在 scala 文件中定义了类 B A 类使用 B 类 B 类使用 A 类 如果我使用 java 编译器 则会出现编译错误 因为 B 类尚未编译 如果我使用scala编译器A类将找不到 有没有可以同时
  • 使用 Java 编程式 HTML 文档生成

    有谁知道如何在 Java 中以编程方式生成 HTMLDocument 对象 而不需要在外部生成字符串 然后使用 HTMLEditorKit read 来解析它 我问的两个原因 首先 我的 HTML 生成例程需要非常快 并且我认为将字符串解析
  • 如何在 SoapUI 中测试使用 JWT 的 REST 服务?

    我正在实施一些 REST 服务 我所有的测试都是使用 SoapUI 进行的 最近 我决定采用 JSON Web Token JWT 进行身份验证 但我在 SoapUI 上找不到对此的任何支持 本机安装或插件 什么也没有 我发现了一些在线生成
  • java“void”和“非void”构造函数

    我用 java 编写了这个简单的类 只是为了测试它的一些功能 public class class1 public static Integer value 0 public class1 da public int da class1 v
  • Java:检查给定日期是否在当前月份内

    我需要检查给定的日期是否在当前月份 我编写了以下代码 但 IDE 提醒我getMonth https docs oracle com javase 7 docs api java util Date html getMonth and ge
  • 会话 bean 中的 EntityManager 异常处理

    我有一个托管无状态会话 bean 其中注入了 EntityManager em 我想做的是拥有一个具有唯一列的数据库表 然后我运行一些尝试插入实体的算法 但是 如果实体存在 它将更新它或跳过它 我想要这样的东西 try em persist
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • Java G1 GC 处理引用对象运行缓慢

    我已经在 J ava 上运行了计数器 它24小时工作 每秒点击通过100次左右 白天 GC 处理时间从 20 60 毫秒缓慢上升到 10000 60000 毫秒 然后下降到 20 60 毫秒 这种模式不时地重复 从 GC 日志中我发现 GC
  • Java String.format 向整数添加空格

    我有一小段代码 我不明白输出 此输出向我的字符串格式文本添加空格 我做错了什么吗 public class HelloWorld public static void main String args int a1 540 int a2 4
  • Java中的DRY原则[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我一直在读关于DRY https en wikipedia org wiki Don 27t repeat yourself原则 虽然看起来
  • 嵌入式 tomcat 7 servlet 3.0 注释不起作用

    我有一个精简的测试项目 其中包含 Servlet 版本 3 0 用注释声明 如下所示 WebServlet test public class TestServlet extends HttpServlet private static f
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

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

    正在阅读Oracle 关于接口的 Java 教程 https docs oracle com javase tutorial java IandI createinterface html其中给出了一个例子Card 打牌 我试图理解接口中的
  • 使用 Maven 3 时 Cobertura 代码覆盖率为 0%

    读完这篇文章后 将 Cobertura 与 Maven 3 0 2 一起使用的正确方法是什么 https stackoverflow com questions 6931360 what is the proper way to use c
  • Scala repl 抛出错误

    当我打字时scala在终端上启动 repl 它会抛出此错误 scala gt init error error while loading AnnotatedElement class file usr lib jvm java 8 ora
  • Java SE + Spring Data + Hibernate

    我正在尝试使用 Spring Data Hibernate 启动 Java SE 应用程序 并且到目前为止已经完成了以下操作 配置文件 Configuration PropertySource classpath hibernate pro
  • 将隐藏(生物识别)数据附加到 pdf 上的数字签名

    我想知道是否可以使用 iText 我用于签名 或 Java 中的其他工具在 pdf 上添加生物识别数据 我会更好地解释一下 在手写板上签名时 我会收集签名信息 例如笔压 签名速度等 我想将这些信息 java中的变量 与pdf上的签名一起存储

随机推荐

  • 将上下文传递给 IntentService

    我有这个代码 Intent publishIntent new Intent HistoryDoneVsPlanned this MyIntentService class publishIntent putExtra HistoryMap
  • 更改模型中的 Django 数据类型而不删除表

    我创建了一个 Django 应用程序 现在我想更改模型中 1 个数据库字段的字段类型 由于数据库中已有一些具有当前类型的记录 我猜想通过简单地在 models py 中更改它来更改类型是不可能的 通过谷歌搜索 我了解到可以通过 sql 控制
  • 如何使用淘汰赛映射插件添加新项目

    我正在尝试一个淘汰制图样本 我想我已经快完成了 我似乎无法向 viewModel foos 添加新的 Foo 谁能看到我在这里错过了什么 var Foo function data var self this self id data id
  • 通过 bash 使用 google 作为字典查找,如何获取第一个定义?

    bin bash Command line look up using Google s define feature command line dictionary echo Type in your word read word usr
  • Gradle 插件从插件 jar 复制文件

    我正在创建我的第一个 gradle 插件 我正在尝试将文件从分发 jar 复制到我在项目中创建的目录中 尽管该文件存在于 jar 内 但我无法将其复制到目录中 这是我的任务代码 import org gradle api DefaultTa
  • org.w3c.dom 包可以从多个模块访问:、java.xml

    我无法导入org w3c dom NodeList打包到 Eclipse 它正在显示 org w3c dom 包可以从多个模块访问
  • 无法同时满足键盘和 UIToolBar 的约束

    我有表格视图 下面有文本视图 我在键盘上方添加一个工具栏以显示 完成 按钮 当我点击一行中的按钮来删除该行时 它会显示 LayoutConstraints 问题 如下所示 下面的日志还显示了事件的流程 我可以确认这个问题与工具栏有关 如果我
  • 列出以前删除的重新创建的相册名称

    背景 我想列出我的帐户中与给定名称匹配的所有相册 Problem 删除相册后 然后重新创建一个具有完全相同名称的相册 代码为 albumQuery gt setAlbumName 即使相册已成功创建 查找相册名称也会失败并返回 404 下面
  • 从复杂(混合)句子中提取简单句子的算法?

    有没有一种算法可以用来从段落中提取简单的句子 我的最终目标是稍后对生成的简单句子运行另一个算法来确定作者的情绪 我已经从 Chae Deug Park 等来源对此进行了研究 但没有讨论准备简单的句子作为训练数据 提前致谢 看一眼Apache
  • npm cordova 警告引擎窗口

    我正在尝试通过命令行安装 cordova 我收到此错误 npm WARN engine email protected cdn cgi l email protection wanted node gt 0 6 npm 1 current
  • 我可以将不同类型的参数传递给 Android 中的 AsyncTask 吗?

    我想实现一个通用的线程保存类 它采用 ImageView 的 RessourceId 和存储所需图像文件的 Url http 它将下载图像并填充 UiThread 中 ImageView 的 src 我想异步任务 http develope
  • 从 phpMyAdmin 更改 mysql 时区

    我正在尝试更改数据库的时区 我在共享服务器数据库支持人员不能只为我更改它 当前时区是 1 00我想要它作为 05 30 我搜索并尝试遵循但没有任何效果 date default timezone set timezone name 添加到我
  • 在没有 Sparc 硬件的情况下运行 Sparc 二进制文件

    在过去的几个月里 我一直很好奇尝试为 SPARC 处理器 V8 或 V9 进行一些组装 我的问题是 我无法访问 SPARC 机器 有没有办法可以在我的 x86 机器上运行 SPARC 二进制文件 我看过 QEMU 但不太确定如何设置它 Si
  • 如何修改生成器角度全栈图标?

    如何修改生成器角度全栈图标 我正在部署入门项目https github com DaftMonk generator angular fullstack https github com DaftMonk generator angular
  • 如何从 Azure DevOps 管道中的另一个作业访问 InvokeRestAPI 任务的响应?

    我正在尝试通过从 Azure DevOps 管道中调用 Elasticsearch 资源的 REST API 来自动部署 Elasticcloud 中的 Elasticsearch 资源 使用 InvokeRestAPI 任务调用 API
  • sed 是否阻塞?

    我的印象是 sed 没有阻塞 因为当我说 iostat sed sed在数据到达时对其进行处理 但是当我这样做时 iostat sed netcat Then sed blocks netcat 我对吗 sed当它不打印到终端时 将在缓冲模
  • OCIEnvCreate 失败,返回代码 1,但错误消息文本不可用

    我在这个异常中遇到了一些麻烦 我已经尝试过我看到的这个选项here https stackoverflow com questions 12901045 ocienvcreate failed with return code 1 but
  • ASP.NET Web 方法和 WCF 服务有什么区别?

    我是 Net 的新手 不明白其中的区别 有人能指出我正确的方向吗 ASP NET Web 服务是为构建通过 HTTP 使用简单对象访问协议 SOAP 发送和接收消息的应用程序而开发的 WCF 用于使 NET Framework 应用程序能够
  • 如何在Eclipse中找到被重写的方法?

    当我在 eclipse java 中查看一个方法时 如何跳转到它覆盖 扩展的方法 三种方法可以解决这个问题 超链接方式 鼠标 键盘 将鼠标悬停在覆盖的方法上时按 CTRL 键 您应该看到一个名为 打开超级实现 的选项 点击它 From he
  • 使用 CXF 拦截器进行错误处理 - 更改响应消息

    我正在尝试处理来自后端的错误 这handleMessage 如果发生错误但内容是 XmlMessage 的实例 则调用 我想将其更改为我自己的响应 只需设置响应代码并添加一些消息 我还没有找到任何合适的文档可以告诉我如何做到这一点 这些示例