我怎样才能访问WSO2 ESB在故障序列中的这个消息?(How can I access this

2019-08-17 15:39发布

我如何可以访问此错误文本是从wso2dss侧标准误差WSO2 ESB故障序列ERROR_CODE?

我得到正确,但这ERROR_MESSAGE给空。 我怎样才能做到这一点?

这是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> 

我如何才能获得呢? 任何人都知道这一点?

Answer 1:

在ESB作为默认是不承认的SOAP错误。 它只是传递它作为一个基本的SOAP消息。 为了识别它,你应该设置属性SOAP_FAULT

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

病房后,它会触发传入SOAP_FAULT故障序列。 所以,你必须声明来消息是SOAP_FAULT所以你要HACE说,这是一个SOAP_FAULT,并迫使其误差序列。 这在[1]博客过去我Amila解释。

对于问题的第二部分,你可以使用有效载荷厂改造。 您可以使用下面的序列。

<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>

canbe指出,任何电子邮件客户端。 给定XPath直接指向您曾经参与过你的问题SOAP响应的错误消息。

并SENF的电子邮件,你可以使用WSO2 ESB邮件传输[2]。

[1]。 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



Answer 2:

请使用下面的代码作为faultSequence。

<faultSequence>
<log level="custom">
<property name="message" expression="get-property('ERROR_MESSAGE')"/>
</log>
</faultSequence>


文章来源: How can I access this message in fault sequence in WSO2 ESB?