SAPфорум.RU https://sapboard.ru/forum/ |
|
Обработка SOAP System Error в синхронном взаимодействии https://sapboard.ru/forum/viewtopic.php?f=70&t=92519 |
Страница 1 из 1 |
Автор: | Андрей Петин [ Ср, мар 02 2016, 10:26 ] |
Заголовок сообщения: | Обработка SOAP System Error в синхронном взаимодействии |
Добрый день! Ситуация следующая. В сценарии - 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 и обработку его результата, либо как-то через модули адаптера. Про модули особо не нашёл информации. Может быть, есть какие-либо готовые решения для этой цели? |
Автор: | Chaser009 [ Ср, мар 02 2016, 10:37 ] |
Заголовок сообщения: | Re: Обработка SOAP System Error в синхронном взаимодействии |
Здравствуйте! Обсуждали для SOAP-канала, решений особых так и не нашли: viewtopic.php?f=70&t=86769 |
Автор: | Андрей Петин [ Ср, мар 02 2016, 14:29 ] |
Заголовок сообщения: | Re: Обработка SOAP System Error в синхронном взаимодействии |
Да, жаль. Уже работает похожий сценарий, но там асинхронный процесс, где отправитель - SAP CRM (proxy), и получатель - тоже эта же система. Но в мэппинге используется UDF, где в Java-коде выполняется lookup к внешней системе по HTTP-каналу. И там, соответственно, можно как-либо обработать результат выполнения HTTP. По сути это один из вариантов асинхронно-синхронного моста. Для разработки такое достаточно удобно. А вот для синхронного вызова никакого аналога придумать не могу, чтоб с UDF или Java Mapping сделать. |
Автор: | Chaser009 [ Чт, мар 10 2016, 06:36 ] |
Заголовок сообщения: | Re: Обработка SOAP System Error в синхронном взаимодействии |
Вообще есть некий "костыльный" вариант: 1. Выключаете SOAP-обертку в канале (Do not use SOAP Envelope). 2. Формируете сообщение целиком, включая SOAP-Envelope. 3. Создаете структуру ответного сообщения, опять же включая Envelope, внутри нее описываете как возвращаемые данные, так и Fault-структуру. 4. В адаптере прописываете XMBWS.NoSOAPIgnoreStatusCode = true, чтобы у вас сообщение прилетало как обычный Response даже в случае ошибки. 5. Ну и дальше анализируете структуру ответа прилетевшего: если есть Fault - значит, ошибка была, дальше смотрите, что там внутри лежит, если Fault нет - значит, данные прилетели. Насколько оно того стоит - зависит от требований к процессу. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |