<int-http:inbound-gateway id="inboundGateway"
path="inboundEndpoint"
supported-methods="PUT" request-payload-type="customJsonType"
message-converters="jacksonJSONConverter"
merge-with-default-converters="true"
error-channel="inboundErrorChannel"
request-channel="SendChannel"
reply-channel="ReplyChannel"/>
<int:channel id="SendChannel" />
<int:channel id="ReplyChannel" />
<int:channel id="inboundErrorChannel" />
<int:service-activator input-channel="inboundErrorChannel" ref="customErrorHandler" method="handle"/>
<bean id="customErrorHandler" class="CustomErrorHandler"/>
以及这里的经纪人。
public class CustomErrorHandler {
private Logger logger = LoggerFactory.getLogger(this.getClass());
public void handle(Message<?> message) {
logger.debug("payload: {}", message.getPayload());
}
}
当我将PUT curl命令发送到/ inboundEndpoint时, 它返回这样的错误消息,
org.springframework.messaging.MessagingException: Could not convert request: no suitable HttpMessageConverter found for expected type
但是SeerealErrorHandler什么也没捕捉到。 (没有来自CustomErrorHandler的日志)
似乎spring default error handler管理对用户的返回响应。
如何在错误通道中捕获这些错误(来自消息转换器)?
答案 0 :(得分:0)
转换错误在过程中发生得太早;错误通道仅获取网关下游发生的错误。
您可以使用servlet过滤器执行某些操作。