0

プロジェクトで Spring Integration を使用しています。アプリケーションで使用されるエンドポイントは、インバウンド ゲートウェイ、ヘッダー ベースのルーター、トランスフォーマー、スプリッター、サービス アクティベーターです。

成功フロー (例外ではない) の場合、インバウンドゲートウェイの応答チャネルが目的の応答を取得し、クライアントがその応答を取得しますが、例外が発生した場合は、カスタマイズされたエラー応答を送信したいと思いますが、これは私のようには機能しません。要件。

上記の要件を達成するためにエラーチャネルを使用していますが、成功していません。

受信ゲートウェイ、エラー チャネルなどの構成を見つけてください。構成でチェーンを使用していません。

<int-http:inbound-gateway id="inboundGateway"
    supported-methods="GET, POST" request-channel="requestChannel"
    path="/services/tylv/{requestParam}" reply-channel="responseChannel"
    error-channel="errorChannel">
</int-http:inbound-gateway>

<int:transformer ref="errorHandler"
 input-channel="errorChannel" method="generateErrorResponse"
 output-channel="responseChannel" />

<bean id="errorHandler"
    class="com.csam.wsc.enabling.integration.transformer.ErrorHandler" />

例外の場合、com.csam.wsc.enabling.integration.transformer.ErrorHandler.generateErrorResponse(ErrorMessage) が正常に呼び出されました。この API は例外を処理し、エラー応答パケットを生成しますが、クライアントに送信されず、HTTP ステータス コード 200 のみが送信されます。送信済。

理想的には、トランスフォーマーの出力チャネルは受信ゲートウェイの応答チャネルであり、成功した場合 (例外なし) にステータス コード 200 と共に応答パケットを既に送信しているため、送信する必要があります。

error-channel の場合、受信ゲートウェイの reply-channel が機能していないと思いますが、よくわかりません。

エラーチャネルの設定を手伝ってください。

4

1 に答える 1

1

エラーがエラー チャネルに到達する前にメッセージのヘッダーを保存してから、保存されたヘッダーを使用して新しいメッセージを作成し、その新しいメッセージを応答チャネルにルーティングする必要があります。

MessageBuilder.fromMessage(errorResponseMessage).copyHeadersIfAbsent(storedHeaders).build();
于 2013-05-03T14:48:17.373 に答える