2012-09-26 2 views
1

현재 개발중인 JAX-WS 기반 응용 프로그램이 있습니다. 나는 서버에서 wsgen을 사용하여 WSDL을 생성 한 다음 wsimport을 사용하여 클라이언트 라이브러리를 빌드한다. 내 메서드 호출을 던져 내 자신의 사용자 지정 예외를 쓰고 있어요. 코드는 다음과 같이 구성됩니다.JAX-WS 클라이언트가 사용자 정의 예외 대신 SOAPFaultException을 throw합니다.

사용자 정의 예외 클래스 :

@WebFault(faultBean = "com.mysite.FaultBean") 
public class MyCustomException extends Exception { 
    private FaultBean faultInfo; 

    //Getters/Setters/Constructors... 
} 

사용자 정의 오류 콩 :

public class FaultBean { 
    private String message; 
    private List<String> messages; 

    //Getters/Setters/Constructors... 
} 

그때 내 웹 서비스 엔드 포인트에 내 방법에서 MyCustomException을 던져. 내 웹 서비스 메서드 중 하나를 호출 할 때 클라이언트가 대신 SOAPFaultException을 얻는 예외를 throw합니다. 사용자 정의 예외가 사용되지 않는 이유는 무엇입니까?

답변

1

그래서 약간의 조사가 끝나면 SOAPFaultException이 내가 생각하는 곳에서 나오지 않아서 던져진 예외가 나타납니다. 실제로는 MyCustomException으로 던져지지 않았습니다. 그래서 모든 경우에 대해이를 해결하기 위해 Spring AOP를 활용하고 모든 호출을 웹 서비스 구현 레이어로 래핑하기 위해 Around aspect를 만들었습니다.

이 측면에서 나는 던진 예외를 잡아서 다시 던지기 전에 MyCustomException에 넣습니다. 내 클라이언트가 다음 예외를 제대로 처리 할 수 ​​있습니다.

관련 문제