2016-07-18 8 views
1

データをキューから取り出し、int-xml:validating-filterを使用して入力ペイロードを検証しています。 throw-exception-on-rejection = "true"を設定して例外がスローされるようにしました。<int-xml:validating-filter>を使用する場合の例外のキャッチ

例外メッセージ(検証エラー)と入力ペイロードを取得する必要があります。このデータをキャプチャするためのオプションを提案してください。

<int-jms:message-driven-channel-adapter id="jmsIn"  
destination="requestQueue" channel="orderChannel"/> 

<int-xml:validating-filter id="validatingFilter" 
    input-channel="orderChannel" 
    output-channel="validOutputChannel" 
    discard-channel="errOutputChannel"        
    schema-type="xml-schema" 
    throw-exception-on-rejection="true"   
    schema-location="OrderProcessing/order.xsd"/> 

答えて

1

あなたがその例外をキャッチできるかどうかは不明です。

if (this.throwExceptionOnRejection) { 
    throw new MessageRejectedException(message, "Message was rejected due to XML Validation errors", 
      new AggregatedXmlMessageValidationException(
       Arrays.<Throwable>asList(validationExceptions))); 
} 

だから、というMessageRejectedExceptionが検証失敗の原因としてmessageを希望している:XmlValidatingMessageSelector

コードは次のようになります。また、すべての検証エラーは、MessageRejectedExceptionAggregatedXmlMessageValidationExceptioncauseにあります。

+0

@Artem Bilan –

+0

私はで例外をキャッチするためのオプションを探していました。私は、が破棄チャネルまたは出力チャネルで例外を提供すると仮定していました。今私は例外がスローされるので、呼び出し側がそれを処理する必要があることを理解しています。 私の特別なケースでは、にエラーチャネルを追加しました。これで、検証エラーメッセージと実際のペイロードをキャプチャできるようになりました。 –

関連する問題