2015-01-12 1 views
1

이 문제에 대한 적절한 해결책을 찾을 수 없습니다. 내가 무슨 일이 있었는지에 따라 사용자에게 다른 메시지를 처리하고 표시하고 싶습니다. 나는 Spring WS를 사용하고 marshalSendAndReceive으로 전화를 걸었다. 반환하는 서비스 메서드에서 지금은 간단히 catch (WebServiceIOException e), 문제는이 예외가 모두 거부 된 (잘못된 자격 증명) 및 쿼리가 클라이언트 쪽 (시간 초과)에 의해 지정된 시간보다 오래 걸릴 때 발생한다는 것입니다. "무언가가 잘못되었다"는 일반적인 메시지를 제시하지 않고이 두 가지를 적절하게 처리 할 수있는 방법이 있습니까?스프링 WS : 핸들 연결이 거부되고 클라이언트 시간 초과 예외가 발생했습니다.

답변

1

WebServiceTemplatetry...catch 블록 및 포괄적 인 오류 처리가있는 doSendAndReceive 메서드에서 열심히 수행합니다. 그 중 하나는 triggerAfterCompletion(int interceptorIndex, MessageContext messageContext, Exception ex)이며, 이는 투입된 ClientInterceptor에 위임합니다.

따라서 적절한 비즈니스 예외를 발생 시키려면 afterCompletion(MessageContext messageContext, Exception ex)을 올바르게 구현하면됩니다.

+0

현재 프로젝트의 Spring WS 라이브러리가 조금 더 오래되어서 그런 동작을하지 못한다. – Vaelyr

+0

글쎄, 그렇지 않으면'WebServiceIOException'에서'cause'를 추출하고 각 경우에 대한 논리를 작성해야합니다. 왜냐하면'WebServiceTemplate'은 다음과 같이하기 때문입니다 :'throw new WebServiceIOException ("I/O error :"+ ex.getMessage(), ex);' –

관련 문제