Spring WS:处理连接被拒绝和客户端超时异常

Spring WS: Handle connection refused and client timeout exceptions

我似乎找不到合适的解决方案。我想根据发生的情况处理并向用户显示不同的消息。我正在使用 Spring WS 并调用 marshalSendAndReceive。在返回的服务方法上,我现在只是 catch (WebServiceIOException e),问题是这个异常是由连接被拒绝(错误的凭据)和查询花费的时间超过客户端指定的时间(超时)引发的?是否有任何正确的方法来处理这两个而不提供 "something went wrong".

的一般消息

WebServiceTemplate 在方法 doSendAndReceive 中努力工作,其中有 try...catch 块和全面的错误处理。其中之一是 triggerAfterCompletion(int interceptorIndex, MessageContext messageContext, Exception ex),它委托给注入的 ClientInterceptor

因此,您只需要正确实施 afterCompletion(MessageContext messageContext, Exception ex) 即可抛出适当的业务异常。

一种方法是实施 ClientInterception class

另一种方法是捕获一般 Exception class 向网络服务发送请求的位置:

try {
  webServiceTemplate.marshalSendAndReceive(request);
} catch(Exception e){
   log.error("your custom message");
}