Текущее время: Ср, авг 23 2017, 19:43

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Обработка SOAP System Error в синхронном взаимодействии
СообщениеДобавлено: Ср, мар 02 2016, 11:26 
Ассистент
Ассистент

Зарегистрирован:
Вт, ноя 25 2014, 16:42
Сообщения: 32
Откуда: Москва
Пол: Мужской
Добрый день!

Ситуация следующая.
В сценарии - SOAP Sender и HTTP Receiver, обмен синхронный.
Интересует возможность какой-либо обработки системных ошибок в случае сбоя при HTTP-запросе (например, таймаут).
SOAP-ответ тогда возвращается типа такого:
Код:
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP:Body>
      <SOAP:Fault>
         <faultcode>SOAP:Server</faultcode>
         <faultstring>Server Error</faultstring>
         <detail>
            <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
               <context>XIAdapter</context>
               <code>ADAPTER.JAVA_EXCEPTION</code>
...
            </s:SystemError>
         </detail>
      </SOAP:Fault>
   </SOAP:Body>
</SOAP:Envelope>

Хотелось бы узнать, какие есть возможности перехватить подобную ошибку и как-либо преобразовать её в корректный response для синхронного outbound-интерфейса.

Насколько я понимаю, это либо нужно делать через ccBPM (использовать ветвь exception), либо вместо HTTP Receiver делать Java Proxy и туда выносить вызов HTTP и обработку его результата, либо как-то через модули адаптера. Про модули особо не нашёл информации. Может быть, есть какие-либо готовые решения для этой цели?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обработка SOAP System Error в синхронном взаимодействии
СообщениеДобавлено: Ср, мар 02 2016, 11:37 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 09:54
Сообщения: 317
Откуда: Владивосток, Россия
Пол: Мужской
Здравствуйте!

Обсуждали для SOAP-канала, решений особых так и не нашли:

viewtopic.php?f=70&t=86769

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обработка SOAP System Error в синхронном взаимодействии
СообщениеДобавлено: Ср, мар 02 2016, 15:29 
Ассистент
Ассистент

Зарегистрирован:
Вт, ноя 25 2014, 16:42
Сообщения: 32
Откуда: Москва
Пол: Мужской
Да, жаль.

Уже работает похожий сценарий, но там асинхронный процесс, где отправитель - SAP CRM (proxy), и получатель - тоже эта же система.
Но в мэппинге используется UDF, где в Java-коде выполняется lookup к внешней системе по HTTP-каналу.
И там, соответственно, можно как-либо обработать результат выполнения HTTP.
По сути это один из вариантов асинхронно-синхронного моста.
Для разработки такое достаточно удобно.

А вот для синхронного вызова никакого аналога придумать не могу, чтоб с UDF или Java Mapping сделать.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обработка SOAP System Error в синхронном взаимодействии
СообщениеДобавлено: Чт, мар 10 2016, 07:36 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 09:54
Сообщения: 317
Откуда: Владивосток, Россия
Пол: Мужской
Вообще есть некий "костыльный" вариант:

1. Выключаете SOAP-обертку в канале (Do not use SOAP Envelope).
2. Формируете сообщение целиком, включая SOAP-Envelope.
3. Создаете структуру ответного сообщения, опять же включая Envelope, внутри нее описываете как возвращаемые данные, так и Fault-структуру.
4. В адаптере прописываете XMBWS.NoSOAPIgnoreStatusCode = true, чтобы у вас сообщение прилетало как обычный Response даже в случае ошибки.
5. Ну и дальше анализируете структуру ответа прилетевшего: если есть Fault - значит, ошибка была, дальше смотрите, что там внутри лежит, если Fault нет - значит, данные прилетели.

Насколько оно того стоит - зависит от требований к процессу.

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB