2015-11-30 2 views
1

Я использую класс, как показано ниже, чтобы вызвать вызов SOAP на внешний веб-сервис.Spring Integration OutBoundGateway увеличивает сообщение об ошибке

public class MySampleWebServiceOutboundGateway extends SimpleWebServiceOutboundGateway { 

    private String externalServiceName; 

    @Override 
    protected Object doHandle(String uri, final Message<?> requestMessage, final WebServiceMessageCallback requestCallback) {  

    try { 
     Message<?> responseMessage = (Message<?>) super.doHandle(uri, requestMessage, new MySampleWebServiceMessageCallback(requestCallback, session,mapHeaders));    

     } catch (RuntimeException t) { 
      ..   
     throw new MessageHandlingException(requestMessage, "Error Occurred at External Service: " + this.externalServiceName, t); 
     } 

Я хочу, чтобы добавить дополнительную информацию для исключения, как внешнее имя службы, так что, когда ошибка канала получить исключение, я могу разобрать сообщение, чтобы получить внешнее имя службы. Тем не менее, я получаю родовой MessageHandlingException в error-channel как это:

gateway.GatewayFacade - failure occurred in gateway sendAndReceive 
org.springframework.integration.MessageHandlingException: error occurred in message handler [(inner bean)#30] 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:79) 

Пожалуйста, дайте мне знать, что я могу сделать, чтобы добавить некоторые дополнительные детали для исключения, без необходимости обернуть исключение с другим исключения.

Полный Трассировка стека:

2015-11-30 15:19:12,445 WARN [main] {} org.springframework.integration.gateway.GatewayProxyFactoryBean$MethodInvocationGateway - failure occurred in gateway sendAndReceive 
org.springframework.integration.MessageHandlingException: Error Occurred for External Service: Retrieve 
    at com.myPackage.ws.outbound.MySampleWebServiceOutboundGateway.doHandle(MySampleWebServiceOutboundGateway.java:161) 
    at org.springframework.integration.ws.AbstractWebServiceOutboundGateway.handleRequestMessage(AbstractWebServiceOutboundGateway.java:164) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:142) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain$1.send(MessageHandlerChain.java:148) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:169) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:228) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:212) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:177) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:171) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:149) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain.handleMessageInternal(MessageHandlerChain.java:131) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102) 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:178) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:149) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.doSendAndReceive(MessagingTemplate.java:361) 
    at org.springframework.integration.core.MessagingTemplate.sendAndReceive(MessagingTemplate.java:274) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:234) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceiveMessage(MessagingGatewaySupport.java:208) 
    at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:323) 
    at org.springframework.integration.gateway.GatewayProxyFactoryBean.doInvoke(GatewayProxyFactoryBean.java:286) 
    at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:277) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    at com.sun.proxy.$Proxy34.exchange(Unknown Source) 
    at org.springframework.integration.gateway.RequestReplyMessageHandlerAdapter.handleRequestMessage(RequestReplyMessageHandlerAdapter.java:47) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:142) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain$1.send(MessageHandlerChain.java:148) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:169) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:228) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:212) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:177) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:171) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:149) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain$1.send(MessageHandlerChain.java:148) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:169) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:228) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:212) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:177) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:171) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:149) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain.handleMessageInternal(MessageHandlerChain.java:131) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102) 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:178) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:149) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:169) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:228) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:212) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:177) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:171) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:149) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102) 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:178) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.doSendAndReceive(MessagingTemplate.java:361) 
    at org.springframework.integration.core.MessagingTemplate.sendAndReceive(MessagingTemplate.java:274) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:234) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceiveMessage(MessagingGatewaySupport.java:208) 
    at com.myPackage.rest.gateway.GatewayFacade.process(GatewayFacade.java:67) 
    at com.myPackage.rest.gateway.GatewayFacade.process(GatewayFacade.java:58) 
    at com.myPackage.springIntegration.MySpringIntegrationTest.verifyErrorResponseWhenRetrieveFailsWithSoapFault(MySpringIntegrationTest.java:51) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) 
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) 
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
Caused by: org.springframework.ws.soap.client.SoapFaultClientException: 1929|Application|This is an error message. 
    at org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault(SoapFaultMessageResolver.java:37) 
    at org.springframework.ws.client.core.WebServiceTemplate.handleFault(WebServiceTemplate.java:774) 
    at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:600) 
    at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537) 
    at org.springframework.integration.ws.SimpleWebServiceOutboundGateway.doHandle(SimpleWebServiceOutboundGateway.java:89) 
    at com.MyPack.ws.outbound.MySampleWebServiceOutboundGateway.doHandle(MySampleWebServiceOutboundGateway.java:141) 
    ... 107 more 
2015-11-30 15:19:12,445 WARN [main] {} com.myPack.rest.gateway.GatewayFacade - failure occurred in gateway sendAndReceive 
org.springframework.integration.MessageHandlingException: error occurred in message handler [(inner bean)#30] 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:79) 
    at org.springframework.integration.handler.MessageHandlerChain$1.send(MessageHandlerChain.java:148) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:169) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:228) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:212) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:177) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:171) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:149) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain$1.send(MessageHandlerChain.java:148) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:169) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:228) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:212) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:177) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:171) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:149) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain.handleMessageInternal(MessageHandlerChain.java:131) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102) 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:178) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:149) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:169) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:228) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:212) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:177) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:171) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:149) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102) 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:178) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.doSendAndReceive(MessagingTemplate.java:361) 
    at org.springframework.integration.core.MessagingTemplate.sendAndReceive(MessagingTemplate.java:274) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:234) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceiveMessage(MessagingGatewaySupport.java:208) 
    at com.myPack.rest.gateway.GatewayFacade.process(GatewayFacade.java:67) 
    at com.myPack.rest.gateway.GatewayFacade.process(GatewayFacade.java:58) 
    at com.springIntegration.MySpringIntegrationTest.verifyErrorResponseWhenRetrieveFailsWithSoapFault(MySpringIntegrationTest.java:51) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) 
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) 
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
Caused by: org.springframework.ws.soap.client.SoapFaultClientException: 1929|Application|This is an error message. 
    at org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault(SoapFaultMessageResolver.java:37) 
    at org.springframework.ws.client.core.WebServiceTemplate.handleFault(WebServiceTemplate.java:774) 
    at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:600) 
    at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537) 
    at org.springframework.integration.ws.SimpleWebServiceOutboundGateway.doHandle(SimpleWebServiceOutboundGateway.java:89) 
    at com.myPack.ws.outbound.MySampleWebServiceOutboundGateway.doHandle(MySampleWebServiceOutboundGateway.java:141) 
    at org.springframework.integration.ws.AbstractWebServiceOutboundGateway.handleRequestMessage(AbstractWebServiceOutboundGateway.java:164) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:142) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain$1.send(MessageHandlerChain.java:148) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:169) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:228) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:212) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:177) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:171) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:149) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.handler.MessageHandlerChain.handleMessageInternal(MessageHandlerChain.java:131) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115) 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102) 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:178) 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:149) 
    at org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:330) 
    at org.springframework.integration.core.MessagingTemplate.doSendAndReceive(MessagingTemplate.java:361) 
    at org.springframework.integration.core.MessagingTemplate.sendAndReceive(MessagingTemplate.java:274) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:234) 
    at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceiveMessage(MessagingGatewaySupport.java:208) 
    at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:323) 
    at org.springframework.integration.gateway.GatewayProxyFactoryBean.doInvoke(GatewayProxyFactoryBean.java:286) 
    at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:277) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    at com.sun.proxy.$Proxy34.exchange(Unknown Source) 
    at org.springframework.integration.gateway.RequestReplyMessageHandlerAdapter.handleRequestMessage(RequestReplyMessageHandlerAdapter.java:47) 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:142) 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73) 
    ... 74 more 

Вот что я заметил. Если шлюз имеет error-channel, как указано ниже, я получаю исключение в error-channel, как я ожидаю.

<int:gateway request-channel="retrieve_external" error-channel="exception_errorChannel" /> 

Однако, я хочу, чтобы определить error-channel на верхнем уровне.

<bean id="gatewayAdapter" class="com.myPack.rest.gateway.GatewayFacade"> 
    <property name="requestChannel" ref="my_Requests" /> 
    <property name="replyChannel" ref="my_response" /> 
    <property name="errorChannel" ref="exception_errorChannel" /> 
</bean> 

public class GatewayFacade extends MessagingGatewaySupport implements GatewayAdapter, BeanNameAware { .. } 

С таким образом, MessagingGatewaySupport класса выглядит, что error-channel является null и rethrows первопричины, которая снова становится обернутой в родовой MessageHandlingException, поэтому я освобождаю первоначальный MessageHandlingException я бросить.

ответ

0

Он должен работать, как вы описываете; заинтересованная (в AbstractMessageHandler) код:

if (e instanceof MessagingException) { 
    throw (MessagingException) e; 
} 
throw new MessageHandlingException(message, "error occurred in message handler [" + this + "]", e); 

т.е. так как вы бросаете MessageHandlingException, это должно быть просто повторно брошено. Таким образом, похоже, что вы выбрасываете еще один MessageHandlingException, который не находится в иерархии MessagingException.

Можете ли вы показать полную трассировку стека?

+0

'org.springframework.integration.gateway.GatewayProxyFactoryBean $ MethodInvocationGateway - произошел сбой в шлюз sendAndReceive org.springframework.integration.MessageHandlingException: Ошибка Occurred для ExternalService: Получение .. Вызванный: org.springframework.ws.soap. client.SoapFaultClientException: WARN [main] {} myPackage.rest.gateway.GatewayFacade - произошел сбой в шлюзе sendAndReceive org.springframework.integration.MessageHandlingException: произошла ошибка в обработчике сообщений [(внутренний компонент) # 30] \t at AbstractMessageHandler. ...... Caused by: SoapFaultClientException' – Krishna

+0

Так что это работает так, как вы хотите, не так ли? –

+0

Нет, я вижу оба исключения в журналах; один с Моим сообщением и другим без моего сообщения, которое является тем, кто собирается на канал ошибок. Кажется, что AbstractMessageHandler получает основную причину, а затем завершает ее с MessageHandlingException – Krishna

Смежные вопросы