我有一个http defined网关,并定义了一个到网关的错误通道。
<int-http:inbound-gateway
request-channel="requestChannel" reply-channel="replyChannel"
supported-methods="POST" request-payload-type="com.test.RequestWsDTO"
path="/trips/modify" error-channel="errorChannel" >
<int-http:request-mapping consumes="application/json" produces="application/json" />
</int-http:inbound-gateway>它从网关转到转换器,将消息转换为ws outboundgateway网关的适当请求。
<int:transformer id="segmentCancelTransformer" ref="segmentCancelTransformerBean" input-channel="segmentCancelChannel"
method="transform" output-channel="rcsChannel"/>
<beans:bean id="segmentCancelTransformerBean" class="com.test.SegmentCancelRequestTransformer" />我从Transformer抛出了一个运行时异常。
我已经定义了一个服务激活器来处理异常。
<int:service-activator input-channel="errorChannel" ref="exceptionhandler" method="createErrorResponse"/>
<beans:bean id="exceptionTransformer" class="com.test.ExceptionHandler" />在ExceptionHandler类中,我处理异常的方式如下
public ErrorDTO createErrorResponse(ErrorMessage msg) {
System.out.println("Exception occured "+msg.getPayload());
ErrorDTO dto=new ErrorDTO ();
......................msg.getPayload()显示了"org.springframework.integration.transformer.MessageTransformationException“的异常
异常消息堆栈跟踪:
Exception occured org.springframework.integration.transformer.MessageTransformationException: Failed to transform Message; nested exception is org.springframework.messaging.MessageHandlingException: nested exception我在这里做错了什么?
发布于 2017-07-04 11:51:48
这确实是正确的,也是有用的。首先,在组件之间松散耦合是首要原则的情况下处理消息传递。另一个优点是将failedMessage设置为MessagingException的属性,您可以使用它来确定问题。
由于错误可能来自另一个线程,因此很难仅通过自定义异常来确定错误所在。无论如何,您总是可以在堆栈跟踪中找到自己的原因。
https://stackoverflow.com/questions/44892850
复制相似问题