1

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 でこれを行うにはどうすればよいですか?

この2つのノードを表示したい:

  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>

どうすればこれにアクセスできますか? 誰もこれを知っていますか?

4

2 に答える 2

1

デフォルトの ESB では、SOAP エラーは認識されません。基本的な SOAP メッセージとして渡すだけです。SOAP_FAULT として識別するには、プロパティを設定する必要があります

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

ワードの後、着信 SOAP_FAULT の障害シーケンスをトリガーします。したがって、受信メッセージが SOAP_FAULT であると宣言する必要があるため、SOAP_FAULT であると言って、強制的にエラー シーケンスにする必要があります。これは [1] 私の Amila を過ぎたブログで説明されています。

質問の 2 番目の部分では、ペイロード ファクトリ変換を使用できます。次のシーケンスを使用できます。

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

任意の電子メール クライアントを指すことができます。質問に投稿した SOAP 応答のエラー メッセージを直接指す特定の xpath。

また、[2] で wso2 esb メール トランスポートを使用してメールを送信できます。

[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

于 2013-03-17T17:55:09.417 に答える
0

次のコードを faultSequence として使用してください。

<faultSequence>
<log level="custom">
<property name="message" expression="get-property('ERROR_MESSAGE')"/>
</log>
</faultSequence>
于 2015-06-29T10:17:58.323 に答える