如何在 WSO2 ESB 中按故障顺序访问此消息?

2023-12-24

如何访问来自 WSO2 ESB 故障序列 ERROR_CODE 中 wso2dss 端标准错误的错误文本?

我已经正常了,但是这个 ERROR_MESSAGE 给出了 NULL。我怎样才能做到这一点?

这是 WSO2DSS 标准错误消息:

<soapenv:Fault xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
   <soapenv:Code>
      <soapenv:Value>soapenv:Receiver</soapenv:Value>
   </soapenv:Code>
   <soapenv:Reason>
      <soapenv:Text xml:lang="en-US" xmlns:xml="http://www.w3.org/XML/1998/namespace">The emp_DataService service, which is not valid, does not belong to the emp_DataService service group.</soapenv:Text>
   </soapenv:Reason>
   <soapenv:Detail/>
</soapenv:Fault>

我想访问错误代码以及错误文本。为什么?因为我需要发送邮件给后端部门,以帮助他们尽快追踪错误。

我如何在 WSO2ESB 中执行此操作?

我希望这两个节点显示:

  1. <soapenv:Code>
              <soapenv:Value>soapenv:Receiver</soapenv:Value>
           </soapenv:Code>
    
  2. 2.
 &ltsoapenv:Text xml:lang="en-US"
 xmlns:xml="http://www.w3.org/XML/1998/namespace">The emp_DataService
 service, which is not valid, does not belong to the emp_DataService
 service group. &lt/soapenv:Text>

我怎样才能访问这个?有人知道这个吗?


在 ESB 中,默认情况下不识别 SOAP 错误。它只是将其作为基本的肥皂消息传递。 为了将其识别为 SOAP_FAULT,您应该设置属性

<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true">

之后它将触发传入 SOAP_FAULT 的故障序列。 因此,您必须声明传入的消息是 SOAP_FAULT,因此您必须说它是 SOAP_FAULT 并强制其出现错误序列。我的 Amila 的博客 [1] 对此进行了解释。

对于问题的第二部分,您可以使用有效负载工厂转换。 您可以使用以下顺序。

<sequence xmlns="http://ws.apache.org/ns/synapse" name="ErrorTransformSequence">
   <log level="full">
      <property name="SEQUENCE" value="----------------DSS FAULT------------------"/>
   </log>
   <payloadFactory>
      <format>
         <m:errorMessage xmlns:m="http://dss.error">                  
            <m:error>                     
               <m:message>$1</m:message>                  
            </m:error>
         </m:errorMessage>
      </format>
      <args>
         <arg value="/soapenv:Fault/soapenv:Reason/soapenv:Text/text()"/>
      </args>
   </payloadFactory>
   <header name="Action" value="urn:errormsg"/>
   <property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
   <send>
      <endpoint>
         <address uri="http://localhost:9765/services/DssService.SOAP11Endpoint/"/>
      </endpoint>
   </send>
</sequence>

可以指向您的任何电子邮件客户端。 给定的 xpath 直接指向您在问题中发布的 SOAP 响应的错误消息。

要发送电子邮件,您可以使用 [2] 中的 wso2 esb 邮件传输。

[1]. http://maharachchi.blogspot.com/2012/09/now-you-can-send-soapfaults-to-fault.html http://maharachchi.blogspot.com/2012/09/now-you-can-send-soapfaults-to-fault.html.

[2]. http://wso2.org/library/knowledge-base/use-mail-transport-esb-convert-soap-message-plain-text-mail http://wso2.org/library/knowledge-base/use-mail-transport-esb-convert-soap-message-plain-text-mail

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

如何在 WSO2 ESB 中按故障顺序访问此消息? 的相关文章

随机推荐

  • 比 double 更精确的数字数据类型?

    Java中是否有一种数据类型可以比十进制数更精确地存储十进制数double 是的 使用java math BigDecimal http download oracle com javase 1 4 2 docs api java math
  • SQL 中 DECLARE 和 SET 的区别

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 使用 SQL 或更具体地说 MySQL 的 DECLARE 和 SET 有什么区别 看起来两者都可以设置变量 我读过 MySQL 文档 但
  • 如何仅授予某些用户对子文件夹的权限[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在我的服务器上拥有 root 权限 并且我想向其特定组和用户授予权限 有一种情况 有目录树 dir1 subdir1 subdir2 s
  • User.Identity.Name 返回用户名而不是名称

    我想在 LoginPartial 当前我正在使用的导航栏中显示用户名而不是用户名User Identity GetUserName 对于 userName 但现在我想显示当前用户的名称 LoginPartial 由 Startup Auth
  • 更改分组 UITableView 内单元格的角半径

    经过几个小时的谷歌搜索后 我想知道是否可以更改圆角半径grouped UITableView I tried hourTable layer cornerRadius 5 0 但似乎一切都没有改变 确保将表格视图的子视图与您的代码一起剪辑
  • move_uploaded_file() 无法将文件从 tmp 移动到 dir

    我一直在寻找解决方案 但找不到答案 我创建了一个图像上传表单 它与 ajaxform 插件一起运行 但它仍然没有上传到目录 error log 说 move uploaded file 无法将文件从 tmp 移动到 dir 然后在前端显示上
  • ICanHas.is - 可以在模板中放置 while 循环吗?

    假设我有一个元素 并且想在其中放入不定数量的 项目 基于用户的选择 有没有办法创建允许某种 while 循环的 ICanHaz 模板 例如 ul for i 0 i lt numOfLi i li stuff li ul icanhaz 小
  • 使用控制器作为语法定义和访问 $rootScope

    我在使用时遇到问题controller as当我需要定义 rootScope 变量值时 该过程由 2 个主要阶段组成 用户未登录 因此当他处理登录表单时 我将在 rootScope 内定义他的个人数据 如姓名和 ID LoginContro
  • Java中如何调用另一个类中的方法?

    目前我有两节课 课堂班级和学校班级 我想在 School 类中编写一个方法 从课堂类中调用 public void setTeacherName String newTeacherName 课堂 java public class clas
  • 如何在 google API v3 中搜索特定文件夹内的文件

    由于我使用的是 google api v3 所以我必须使用 fileList 而不是使用父级和子级列表 所以现在我想搜索特定文件夹内的文件列表 所以有人可以建议我该怎么做 这是我用来搜索文件的代码 private String search
  • 如何将文件文档发送到打印机并进行打印?

    这是基本前提 我的用户单击一些小玩意 然后一个 PDF 文件就会出现在他的桌面上 有什么方法可以让我将此文件发送到打印机队列并将其打印到本地连接的打印机吗 string filePath filepathisalreadysethere S
  • glfwSetCursorPosCallback 在另一个类中运行

    我真的被困住了 我有 mainWindow 并在主游戏循环中执行以下操作 poll for input glfwPollEvents this gt controls gt handleInput window world gt getPl
  • 致命错误:调用未定义的函数socket_create()

    我的代码是这样的 if this gt master socket create AF INET SOCK STREAM SOL TCP lt 0 die socket create failed reason socket strerro
  • 从 SwiftUI 列表访问底层 UITableView

    Using a List视图 有没有办法访问 并因此修改 底层UITableView对象而不重新实现整个List as a UIViewRepresentable 我尝试过初始化List在我自己的范围内UIViewRepresentable
  • 在查询结果sql中插入额外的行

    给定一个包含不规则时间戳条目的表 必须以固定的 5 分钟间隔插入 中断 关联的数据可以 将为 NULL 我正在考虑获取开始时间 创建一个具有窗口函数的子查询 并向开始时间添加 5 分钟间隔 但我只能想到使用 row number 来增加值
  • AVQueuePlayer 的挫败感(缓冲区欠载处理)

    我在 AVQueuePlayer 上玩得很开心 非常简单 我在使用 playerItemWithURL 构建的 AVPlayerItems 数组上进行制作 并指向网络服务器上的视频资源 如果我尝试在刺激器 原文如此 中运行这个东西 它会播放
  • 了解“模板参数无效”错误消息

    考虑代码 include
  • 无法加载 YouTube 缩略图的网络图像 Flutter Web

    我正在尝试在我最新的 Flutter 项目中实现 Youtube Plyr IFrame 插件 https pub dev packages youtube plyr iframe https pub dev packages youtub
  • Windows 7 CMD 中的 UTF-8 [重复]

    这个问题在这里已经有答案了 我尝试在win7 cmd中显示UTF 8 目前 我正在使用标准字体 因为正如我在 mysql exe 中看到的那样 它与我正在使用的字符 目前是德语元音 配合得很好 另外 使用另一种字体时 会出现相同的字符 但我
  • 如何在 WSO2 ESB 中按故障顺序访问此消息?

    如何访问来自 WSO2 ESB 故障序列 ERROR CODE 中 wso2dss 端标准错误的错误文本 我已经正常了 但是这个 ERROR MESSAGE 给出了 NULL 我怎样才能做到这一点 这是 WSO2DSS 标准错误消息