3

スキーマを使用して受信リクエストを検証できない状況に直面しています (基本的にスキーマは存在しますが、リクエスト内の任意の文字列を受け入れます。wsdl デザイナーには、さまざまなソースと柔軟性からのリクエストを受け入れる独自の理由があります)。しかし、リクエストが受信されると、リクエスト ラッパーの子要素が期待どおりであることを検証します (そのために XPath を使用します)。Soap Fault子要素が期待どおりでない場合は、コードでスローしたいと思いClientます。スキーマの検証に失敗したというエラー メッセージが含まれている可能性があります。リクエストに有効な要素が含まれていません。

Mule 3.3 を使用していて、要素でXPath検証を行っており、ブロック<choice>で例外をスローしたいと考えています。<otherwise>

  1. Soap Faultラバの流れで手動で投げる方法はありますか
  2. カスタム障害文字列を追加する方法。の属性をoutInterceptor使用していないため、が目的を解決するかどうかはわかりません。schemaValidation<cxf:proxyService>

ここに私の流れの一部があります

<http:inbound-endpoint address="${service.address}" exchange-pattern="request-response">
  <cxf:proxy-service wsdlLocation="classpath:service.wsdl" namespace="http://company.com/services/service" service="CompanyService" />
</http:inbound-endpoint>
<choice>
  <when>.....</when>
  <otherwise><!-- Here I want to throw Soap Fault ---></otherwise>
</choice>
<catch-exception-strategy>
  <flow-ref name="generateErrorResponse" />
</catch-exception-strategy>
4

1 に答える 1

6

を使用しているためcxf:proxy-service、応答を完全に制御できます。たとえば、otherwiseブロックに次のコードを追加すると、任意の SOAP エラーを作成できます。

<expression-component><![CDATA[
 message.payload = '<soap:Fault xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
                 + '<faultcode>A code</faultcode><faultstring>A string</faultstring>'
                 + '</soap:Fault>';
]]></expression-component>
于 2013-01-17T19:02:45.297 に答える