Текущее время: Чт, мар 28 2024, 14:21

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




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

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

Ситуация следующая.
В сценарии - SOAP Sender и HTTP Receiver, обмен синхронный.
Интересует возможность какой-либо обработки системных ошибок в случае сбоя при HTTP-запросе (например, таймаут).
SOAP-ответ тогда возвращается типа такого:
Code:
<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, 10:37 
Старший специалист
Старший специалист
Аватара пользователя

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

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

viewtopic.php?f=70&t=86769

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


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

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

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

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


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

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

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 + 3 часа


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

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


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

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