Spring Integration を使用して Restful API を開発していますが、サービスの 1 つから例外が発生したときにメッセージを取得できません。
これは私のアプリコンテキストです:
<int-http:inbound-gateway id="v1.getEvent.inbound.gateway"
path="/ptgapi/{apiVersion}/clients/{clientId}/events/{eventId}"
supported-methods="GET"
request-channel="v1.getEvent.channel.input"
reply-channel="v1.getEvent.channel.output"
error-channel="v1.getEvent.channel.error"
convert-exceptions="true"
mapped-request-headers="HTTP_REQUEST_HEADERS,X-ptg-client-token,X-ptg-user-id,X-ptg-user-token,X-ptg-channel"
request-timeout="50000"
reply-timeout="50000">
<int-http:header name="apiVersion" expression="#pathVariables.apiVersion"/>
<int-http:header name="clientId" expression="#pathVariables.clientId"/>
<int-http:header name="eventId" expression="#pathVariables.eventId"/>
</int-http:inbound-gateway>
<int:chain input-channel="v1.getEvent.channel.input" output-channel="v1.getEvent.channel.output" send-timeout="50000">
<int:header-enricher>
<int:error-channel ref="v1.getEvent.channel.error" />
</int:header-enricher>
<int:service-activator ref="v1.validation.service" method="validateRequest"/>
<int:service-activator ref="v1.getEvent.service" method="getEvent"/>
<int:object-to-json-transformer/>
</int:chain>
<int:chain input-channel="v1.getEvent.channel.error" output-channel="v1.getEvent.channel.output">
<int:transformer ref="errorUnwrapper" method="manageError" />
</int:chain>
私の errorUnwrapper トランスフォーマーは次のとおりです。
@MessageEndpoint public class ErrorUnwrapper {
@Transformer
public Message<?> manageError(Message<?> errorMessage) {
Message<?> failedMessage = ((MessagingException) errorMessage.getPayload())
.getFailedMessage();
Message<?> messageOut = MessageBuilder
.withPayload("")
.copyHeadersIfAbsent(failedMessage.getHeaders())
.setHeaderIfAbsent(HttpHeaders.STATUS_CODE, HttpStatus.ALREADY_REPORTED)
.build();
return failedMessage;
}
}
アイデアは、トランスフォーマーにステータスエラーコードを割り当ててユーザーに通知することですが、デバッグモードでリターンステートメントに到達したことを確認できますが、情報がクライアントに到達することはありません...
ここで何が問題になる可能性がありますか?
ありがとう!