2011-06-27 6 views
4

私はトランスフォーマを持っており、org.w3c.dom.Documentを受け取り、ドメインオブジェクトを返します。そして、これはいいです。欠落している要素がある場合は、アプリケーション例外が発生します。Spring統合トランスフォーマで例外を処理する

しかし、私はその例外をエラーチャンネルに取得したいのですが、代わりにハンドラーチェーンをバブリングして現在動作しています。変換に失敗した場合にエラーチャンネルを指定する方法があればいいでしょう。

私ができます。それは、両方の文書を解析する意味が

  • の前(または後)に欠けている要素をチェックするためにルータを介して変圧器
  • ルートメッセージ

をメッセージを渡します2回、少し書き直す。

答えて

5

私が思いついた答えは、変圧器の戻り値の型をドメインPOJOからメッセージに変更することでした。そして、例外の場合、メッセージを返す。例外は、ペイロードタイプルータによって正しいハンドラにルーティングされます。

0

例外メッセージの送信先を特定するには、 "errorChannel"ヘッダーを設定する必要があります。たとえば、

<int:chain input-channel="myInputChannel"> 
    <int:header-enricher> 
     <int:error-channel ref="myErrorChannel" /> 
    </int:header-enricher> 
    <int:transformer ref="myTransformer" /> 
    <!-- Further actions after the transformer here --> 
</int:chain> 

このチェーンは、トランスフォーマを呼び出す前にエラーチャネルヘッダーを割り当てます。トランスフォーマーが成功すると、チェーンはダウンし続けますが、例外がスローされた場合は、MessagingExceptionがメッセージとしてmyErrorChannelに送信されます。 (後でチェーン内で例外を処理する方法を変えたい場合は、例外を送信する次の場所にerrorChannelヘッダーを更新するために、トランスフォーマの後に別のヘッダーを追加することができます)。

参照Spring IntegrationドキュメンテーションのError Handlingのセクションに詳細があります。

関連する問題