Spring Integration,在错误通道上捕获异常会阻止返回

时间:2015-03-06 10:15:24

标签: java spring-integration

我有一组简单的REST服务,它们都配置了error-channel,以允许service-activator指定的bean捕获异常。

当发生异常时,将按预期调用bean中的方法,并记录异常。但是,调用者(即HTTP客户端)永远不会得到响应。

我需要做些什么才能将某种错误(或实际上是什么)返回给客户端?

我假设我错过了一些明显的东西!

1 个答案:

答案 0 :(得分:1)

我猜你的service-activator没有返回任何内容,但它对请求 - 回复案例不利。对于顶级HTTP组件,如果您在error-channel内捕获异常并不重要,它仍然期望响应。

即使您在service-activator中捕获并记录该异常,它也必须返回特定于响应状态的内容,例如:一些String消息。

此外,您可以从那里填充HttpHeaders.STATUS_CODE邮件标题或使用<header-enricher>填充。

在这种情况下,您应该依赖于请求消息头中的TemporaryReplyChannel,因此不会在错误流中的最终组件中提供任何output-channel。但无论如何,有效的return必须存在。