У меня есть SOAP
служба (spring boot + CXF
), и эта служба может выдавать неисправности.Теперь мой код выглядит следующим образом:
@Component
@Slf4j
public class MyEndpoint implements MessageExchangePortType {
private final Void aVoid = new Void();
@Override
public SendRequestResponse sendRequest(SendRequestRequest request) throws MessageIsAlreadySentException{
try {
myHandler.request(...);
} catch (MessageIdAlreadyExistsException e) {
log.error(e.getMessage(), e);
throw new MessageIsAlreadySentException(FaultString.MESSAGE_IS_ALREADY_SENT.getMessage(), aVoid);
}
}
Это мое исключение:
public class MessageIdAlreadyExistsException extends Exception {}
Я пересылаю это Исключение из глубины классов до самого верха, чтобы поймать его ибросьте другой, который находится в сигнатуре веб-метода:
} catch (MessageIdAlreadyExistsException e) {//my exception
throw new MessageIsAlreadySentException(FaultString.MESSAGE_IS_ALREADY_SENT.getMessage(), aVoid); //web service exception
}
Это исключение веб-службы:
@WebFault(name = "MessageIsAlreadySent", targetNamespace = "")
public class MessageIsAlreadySentException
extends Exception
{
Исключения во рту - Checked
, но мне нужен какой-то механизмкак весенний отдых.Я хочу выбросить RuntimeException
из того места, где появляются эти исключения, и после этого я хочу обработать его в одном месте, установить мое сообщение и вернуться к клиенту.Как это:
@ExceptionHandler(EmailSendException.class)
protected ResponseEntity<RestResponse<Boolean>> handleEmailSendException(EmailSendException e) {
...
}
Как я могу сделать это с помощью веб-службы SOPA?