Проблема:
Есть прокси-сервис на WSO2 ESB 4.5.1, вызывающий конечный веб-сервис по http. Конечный сервис реализован на JAX-WS и использует версию SOAP 1.1. При попытке использовать SOAP 1.2 (используемый шиной по-умолчанию) валится с исключением:
com.sun.xml.ws.server.UnsupportedMediaException: Unsupported Content-Type: application/soap+xml; charset=UTF-8; action="xxx" Supported ones are: [text/xml]
Необходимо заставить прокси-сервис WSO2 использовать именно версию 1.1.
Решение:
Добавить атрибут format="soap11" в настройку конечной точки на шине:
<endpoint xmlns="http://ws.apache.org/ns/synapse" name="[EP_NAME]">
<address format="soap11" statistics="disable" trace="disable" uri="[EP_URI]">
...
Хм.... А как насчет ответов? Они тоже прийдут в формате soap 1,2? Или так и остануться в soap 1.1? Я ставил опыты и так и этак - заставить WSO преобразовать запрос из SOAP 1.2 в SOAP 1.1 не представляет труда вышеуказанынм способом. Однако я, например, всегда получаю ответ в формате SOAP 1.1.
ОтветитьУдалитьДля взаимодействия с самим прокси-сервисом ESB по протоколу soap 1.2 есть отдельный биндинг с соотв. endpoint`ами (т.е. если прокси-сервис публикуется по протоколам http и https, то он имеет 4 endpoint`а: 2 для soap 1.1 и два - для soap 1.2), если Вы это имелии ввиду
УдалитьЕсть то он есть, однако присылает ответы в формате soap 1.1, безо всякой конвертации... Т.е. используем биндинг 1.2, отправляем запрос в формате 1.2, прокси успешно конвертирует запрос в 1.1, сервис отвечает в 1.1, однако ответ на биндинг 1.2 приходит все равно в формате 1.1.
УдалитьПечально, не знал об этом
Удалить