【发布时间】:2014-06-03 07:46:44
【问题描述】:
我在处理 <int-ws:outbound-gateway> 上的 http 错误时遇到问题
我尝试在<int:gateway> 上放置error-channel,但它似乎不起作用,因为我得到了解组异常。
另外我觉得不对,应该是在收到<int-ws:outboung-gateway>的消息后某处发现http错误
我的消息系统是这样设置的:<int:gateway> -> channel -> transformer -> channel -> <int-ws:outboung-gateway>
问题:使用 spring 集成捕获 http 错误的正确方法是什么?
编辑后
<int:channel id="checkProcessRequestChannel"/>
<int:channel id="checkProcessResponseChannel"/>
<int:channel id="errorChannel"/>
<!-- channels for connecting to the outbound gateway -->
<int:channel id="checkProcessOutboundRequestChannel"/>
<int:channel id="checkProcessOutboundResponseChannel"/>
<int:gateway id="eInvoiceGateway" service-interface="com.iquest.play.integration.einvoice.EInvoiceGateway" error-channel="errorChannel">
<int:method name="checkProcessByCode" request-channel="checkProcessRequestChannel" reply-channel="checkProcessResponseChannel"/>
<int:gateway>
<int:transformer ref="eInvoiceTransformer" method="transformCheckProcessRequest" input-channel="checkProcessRequestChannel" output-channel="checkProcessOutboundRequestChannel"/>
<int:transformer ref="eInvoiceTransformer" method="transformCheckProcessResponse" input-channel="checkProcessOutboundResponseChannel" output-channel="checkProcessResponseChannel"/>
<int-ws:outbound-gateway id="checkClientByCodeOutboundGW"
request-channel="checkProcessOutboundRequestChannel"
reply-channel="checkProcessOutboundResponseChannel"
marshaller="eInvoiceMarshaller"
unmarshaller="eInvoiceMarshaller"
destination-provider="eInvoiceUriProvider"
message-factory="eInvoiceMessageFactory"
/>
修复:
因此,在网关上放置error-channel 后,线程卡在某个地方。这是一个非常愚蠢的问题,网关错误通道的 service-activator 的名称是 errorHandler,它可能被 spring 命名空间使用 -> 更改 bean 名称解决了问题。
【问题讨论】:
-
您是否与 5xx 错误有关?
-
是的,我需要忽略肥皂故障并只处理 http 5xx 错误
-
你能显示来自 int:gateway 的流通过错误通道吗?
-
我添加了一个
after edit部分 -
你所做的是正确的——异常被网关捕获并发送到
error-channel。 “......但它似乎不起作用,因为我得到解组异常......” - 你能进一步解释吗?打开 DEBUG 日志并遵循消息流 - 它应该变得清晰。
标签: java web-services http spring-integration