2016-07-18 11 views
1

Я вызываю 2 разных веб-службы, используя два исходящих шлюза webservice в моем потоке шлюза интеграции Spring. Я реализовал 2 отказа Resolver, в каждом шлюзе для устранения ошибок SOAP и хочу создать собственное исключение для приложения и выбросить из resolver в мой обработчик исключений.Невозможно выбрасывать CustomException из Resolver-Message Resolver

My FaultResolver получает вызов, когда мы получаем отказ SOAP от вызова службы. Но я не смог вытащить пользовательский excetion из своего резольвера, поскольку он только позволял мне бросать IOException.

Из-за этого я выбрасываю исключение Runtime с сообщением от моего резольвера и перехватываю это исключение Runtime в моем обработчике исключений. Правильная ли практика бросать исключение во время выполнения и ловить в обработчике или является другим лучшим способом справиться с этим сценарием или любой другой реализацией для обработки ошибки SOAP и запуска пользовательского исключения.

ответ

1

Лучший способ определить, хорошо ли ваше решение или нет, просто попробуйте найти готовые решения по этому вопросу. Один из них:

public class SimpleFaultMessageResolver implements FaultMessageResolver { 

    public void resolveFault(WebServiceMessage message) { 
     if (message instanceof FaultAwareWebServiceMessage) { 
      throw new WebServiceFaultException((FaultAwareWebServiceMessage) message); 
     } 
     else { 
      throw new WebServiceFaultException("Message has unknown fault: " + message); 
     } 
    } 
} 

где WebServiceFaultException точно RuntimeException.

Итак, я думаю, что вы в порядке, чтобы идти вперед.

+0

Да спасибо за информацию @Artem Позвольте мне пойти с моей реализацией – springbootlearner