Я разрабатываю веб-сервис SOAP с CXF 2.3.3. Я хочу создать пользовательское исключение, когда пользователь отправил неверные данные. Мой класс исключений выглядит следующим образом.
@WebFault(name="InvalidUserDataException", targetNamespace="http://foo.bar.com/")
@XmlAccessorType(XmlAccessType.FIELD)
public class InvalidUserDataException extends RuntimeException {
public InvalidUserDataException(){
super();
}
String validationErrors;
}
В моем методе класса Impl я специально выбрасываю это исключение, чтобы посмотреть, возвращается ли CXF-исключение SoapFault клиенту, но все, что я делаю с любым из этих классов, приводит к той же ошибке: createNewUser выдало исключение, разматывая сейчас.
Обратите внимание, что интерфейс WSUserRegistration также объявляет, что метод createNewUser генерирует исключение InvalidUserDataException.
public class WSUserRegistrationImpl implements WSUserRegistration {
@Autowired
IWSUserValidationProxy validationProxyImpl;
@Override
public int createNewUser(RegistrationInputProperty registrationInfo) throws InvalidUserDataException {
if (true) {
throw new InvalidUserDataException();
}
return 1;
}
}
Моя цель - перехватить это исключение из SOAPFaultOutInterceptor и вернуть настроенный faultDetail.
Как заставить CXF перехватить эту ошибку и вернуть объект SOAPFault? Есть идеи?