barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

понедельник, 31 декабря 2012 г.

WSO2 ESB: как заставить прокси сервис использовать SOAP 1.1 в исходящих сообщениях

Проблема:

Есть прокси-сервис на 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]">
...

4 комментария:

  1. Хм.... А как насчет ответов? Они тоже прийдут в формате soap 1,2? Или так и остануться в soap 1.1? Я ставил опыты и так и этак - заставить WSO преобразовать запрос из SOAP 1.2 в SOAP 1.1 не представляет труда вышеуказанынм способом. Однако я, например, всегда получаю ответ в формате SOAP 1.1.

    ОтветитьУдалить
    Ответы
    1. Для взаимодействия с самим прокси-сервисом ESB по протоколу soap 1.2 есть отдельный биндинг с соотв. endpoint`ами (т.е. если прокси-сервис публикуется по протоколам http и https, то он имеет 4 endpoint`а: 2 для soap 1.1 и два - для soap 1.2), если Вы это имелии ввиду

      Удалить
    2. Есть то он есть, однако присылает ответы в формате soap 1.1, безо всякой конвертации... Т.е. используем биндинг 1.2, отправляем запрос в формате 1.2, прокси успешно конвертирует запрос в 1.1, сервис отвечает в 1.1, однако ответ на биндинг 1.2 приходит все равно в формате 1.1.

      Удалить