如何阻止 Apache CXF 发送响应消息?

2024-04-27

如果给定的 SOAP 标头元素具有给定值(例如,如果标头标记“response”的值为“0”),我根本不希望 Apache CXF 返回响应。

我怎样才能做到这一点? CXF 似乎假设所有呼叫都会收到响应。

(我知道这在 Web 服务上下文中看起来很奇怪,但如果您的传输是 JMS,则似乎不那么奇怪)。


我已经能够使用中止拦截器链的拦截器来做到这一点。

我已经使用 HTTP 配置(WebSphere 返回空的 200)和 ActiveMQ 配置(没有响应返回到响应队列)对此进行了测试。

package my.super.interceptor;

public final class Suppressor extends AbstractSoapInterceptor {

   public Suppressor() { super(Phase.SETUP); }

   @Override
   public void handleMessage(final SoapMessage message) throws Fault        
   {                       

     final boolean suppressResponse = this.suppressResponse(message);

     if(suppressResponse) {
         log.debug("-> Suppressing response");
         message.getInterceptorChain().abort();
     }

   //if you want to suppress both responses and faults, you need
   //to check them separately. 
   //Change this code to check headers for whatever criteria you want
   //(Note you may need to change the super(Phase...) )
   //The code's a bit messy here - just sketching out the idea for the answer
   private boolean suppressResponse(final Message message) {            
     final Fault fault = (Fault)message.getContent(Exception.class);

     if(fault != null) {
        final String faultMessage = fault.getMessage();

         return faultMessage.indexOf("Something-you-want-to-match") > 0;

     } else {
        final MessageInfo messageInfo = (MessageInfo)message.get("org.apache.cxf.service.model.MessageInfo");            
        final String operation = messageInfo.getOperation().getOutputName();            

        return operation.indexOf("Something-you-want-to-match") > 0;
     }
   }

和你的applicationContext.xml:

<jaxws:endpoint ...>
  <jaxws:outInterceptors>
     <bean class="my.super.interceptor.Suppressor"/>
   </jaxws:outInterceptors>
   <jaxws:outFaultInterceptors>
     <bean class="my.super.interceptor.Suppressor"/>
   </jaxws:outFaultInterceptors>
</jaxws:endpoint>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何阻止 Apache CXF 发送响应消息? 的相关文章

随机推荐

  • Android 支持 v4 22.2.0 的 Proguard 配置

    更新 Gradle Android 构建的依赖关系后使用com android support support v4 22 2 0从本地 Maven extras 存储库 在 SDK 内 Proguard 开始抛出这些问题 Warning
  • 如何避免 Scala 中的可变局部变量?

    避免在 Scala 中使用可变变量被认为是一种很好的做法 来自 Scala 编程 第 2 版 第 52 页 Scala 允许您以命令式风格进行编程 但鼓励您采用更具函数式的风格 后来 Scala 鼓励您倾向于 vals 但最终达到适合手头工
  • 如何在 AWS 中已有的 Terraform 资源(手动创建)中使用?

    有没有办法在我的 AWS 帐户中使用手动创建的 terraform 资源 我不想改变它们 老实说 我不想 碰 它们 我只需要为我正在创建的环境提供一些资源 例如 vpc 和 IAM 我读过一些有关导入的内容 但我不确定这就是答案吗 Terr
  • Android handler.postDelayed 正在停止我的媒体播放器以顺利运行歌曲?

    您好 我是 Android 编程新手 我在构建媒体播放器应用程序时需要很少的帮助 在该应用程序中我使用搜索栏来更新进度 如下所示 Handler handler new Handler paly setOnClickListener new
  • 如何在 PowerShell 中从数组创建 ArrayList?

    我有一个数组中的文件列表 我想枚举这些文件 并从中删除特定文件 显然我无法从数组中删除项目 所以我想使用ArrayList 但以下内容对我不起作用 temp Get ResourceFiles resourceFiles New Objec
  • C99 中带有 0 个参数的可变参数宏

    我有一些调试代码 如下所示 define STRINGIFY x x define TOSTRING x STRINGIFY x define AT FILE TOSTRING LINE void my error const char l
  • 与Java混淆覆盖访问级别[重复]

    这个问题在这里已经有答案了 可能的重复 为什么不能降低java子类中方法的可见性 https stackoverflow com questions 1600667 why cant you reduce the visibility of
  • Plotly:如何使用日期时间索引绘制中心有一条线的范围?

    我想绘制一条周围有范围的线 就像这张照片所示 我发布了一个原始问题 但没有指定索引是日期时间索引 我以为这并不重要 但我错了 有一个答案用数字索引覆盖它 Plotly 如何制作具有多条线和标准差阴影区域的图形 https stackover
  • 将正则表达式扩展到负数

    我想将以下正则表达式扩展到负数 this value this value replace 0 9 g 我尝试添加减号 执行类似 0 9 g 的操作 但这允许在数字的任何位置输入减号 我只想允许数字开头出现一次减号 随后出现的减号应被忽略
  • 如何在 Windows 8.1 中的 anaconda(python3.6) 中构建 cython pyx 到 pyd?

    我参考了一些网站在 Windows 8 1 中将 pyx 构建为 pyd 我正在使用带有 Spyder IDE 的 Anaconda Distribution 我已经开发了 pyx 文件 但无法在 Anaconda 命令提示符 中构建 水蟒
  • 使用 tkinter + pyhook 时冻结。两个事件循环和多线程

    我正在用 python 2 7 编写一个工具 记录用户按下键盘或鼠标按钮的次数 点击次数将显示在屏幕左上角的一个小黑框中 即使另一个应用程序处于活动状态 该程序也会记录点击 除非我将鼠标移到框上 否则它工作正常 然后鼠标冻结几秒钟 然后程序
  • 我们如何使用 StringBuilder 在字符串前面添加字符串?

    我知道我们可以使用附加字符串StringBuilder 有没有一种方法可以使用前置字符串 即在字符串前面添加字符串 StringBuilder这样我们就可以保持性能优势StringBuilder offers 使用位置参数设置为 0 的 i
  • 将 Base64 字符串转换为 JPG

    我正在得到图像为 base64 字符串 dataurl 下面是我的函数 它将dataurl进入图像 现在 如果图像是 png 则 png 库将创建图像 而 jpg 库将引发错误 反之亦然 问题是当我上传 png 时效果很好 但是当我上传 j
  • 从 LINQ to SQL 升级到 EF 4.1 时,如何最大限度地减少性能损失?

    我最近将一个使用 LINQ to SQL 和 SQL Server CE 3 5 的应用程序更新为 Entity Framework 4 1 Code First 和 SQL Server CE 4 0 现在它的运行速度明显变慢 我在之前和
  • 如何在 spring 中将模型作为重定向属性传递

    redirectModel addAttribute Model model return REDIRECT PREFIX my company organization management manage users 当我通过这个时 我得
  • 带权重的欧几里得距离

    我目前正在使用SciPy计算欧氏距离 dis scipy spatial distance euclidean A B 在哪里 A B是5维位向量 现在工作正常 但是如果我为每个维度添加权重 是否仍然可以使用 scipy 我现在拥有的 sq
  • Django i18n 和 python 语言环境(和日期)

    我一直在使用 Django 的 i18n 系统 它似乎大部分工作正常 然而 模型代码中的日期似乎引起了问题 我使用 datetime strftime 填充一些 CHOICES 元组 然后在表单中使用它们 据我了解 django 会将语言环
  • 如何在navigationStart路由器事件中暂停路线更改

    在我的应用程序中 我有从包 节点模块 公开的路由 因此 我无法将 canActivate 或 canDeactivate 用于节点模块内定义的路由 因此 我开始订阅应用程序组件中的所有路线更改 并根据条件将用户重定向到不同的路线 由于条件有
  • PEX协议(磁力链接)如何找到它的第一个IP?

    我试图了解磁力链接如何工作 因为我读过他们使用 DHT 和 PEX 来获取对等点 但如果我是网络中的新节点 如何才能找到仅具有哈希值的对等点文件 它不是总是需要一个到已知主机的链接吗 Thanks Bittorrent DHT 可以通过多种
  • 如何阻止 Apache CXF 发送响应消息?

    如果给定的 SOAP 标头元素具有给定值 例如 如果标头标记 response 的值为 0 我根本不希望 Apache CXF 返回响应 我怎样才能做到这一点 CXF 似乎假设所有呼叫都会收到响应 我知道这在 Web 服务上下文中看起来很奇