Arhn - архитектура программирования

Входящая конечная точка SOAP для Mule

Я хочу предоставить услуги SMS в качестве конечной точки SOAP. У меня есть служба SMS, работающая в муле, но в настоящее время у меня есть простая конечная точка HTTP.

Кто может помочь мне с шагами и файлом WSDL этой службы SOAP, чтобы использовать ее в качестве входящей конечной точки

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.sms.example.com/">
<soapenv:Header/>
<soapenv:Body>
  <ws:sendTextMessage>
<sender>%SENDERID%</sender>
<to>%TO%</to>
<text>%MESSAGE%</text>
  </ws:sendTextMessage>
</soapenv:Body>
</soapenv:Envelope>

С уважением.

Жако

11.03.2014

Ответы:


1

Я не думаю, что есть какие-либо инструменты для создания WSDL-файла из примера SOAP, но ваша схема выглядит настолько простой, что вы сможете создать ее вручную, пройдя какое-нибудь руководство по helloworld wsdl. Другой подход — попытаться создать реализацию Java для службы, и она распечатает wsdl при подключении к конечной точке. Дополнительную информацию об этих два подхода.

Чтобы протестировать и проверить конечную точку wsdl/soap, установите SoapUI и создайте тестовый проект, в котором вы импортируете wsdl, генерируете запрос (работает автоматически), убедитесь, что он соответствует вашему примеру, а затем настройте конечную точку для запроса, чтобы отправить его на входящий Mule.

В Mule у вас есть почти два варианта: вы можете реализовать службу как класс Java, как в приведенных выше примерах, или вы можете реализовать ее как cxf:proxy-service, где вы получаете прямой доступ к полезной нагрузке. В последнем подходе вам не нужны никакие классы Java, вы просто оборачиваете свои потоки внутри SOAP API.

ОБНОВИТЬ:

Запросы SOAP в значительной степени представляют собой просто HTTP-вызовы с XML, как в вашем примере, в виде необработанных данных POST, поэтому вы можете получить доступ к их содержимому во входящих сообщениях Mule, как и к любым данным POST, и проанализировать их с помощью XPath. Если вы определите cxf:proxy-service, вы получите немного более «настоящую» функциональность службы SOAP, но вы можете принимать вызовы SOAP практически с любым прослушивателем HTTP, захватывать их содержимое и отвечать строкой, которую ожидает клиент, и клиент не заметит разницы.

Если ваш поток Mule связывается с другой службой SOAP, вы можете создать прокси-сервер как для сервера, так и для клиента, как в этот пример. Вы также можете получить WSDL для другой службы SOAP, добавив ?wsdl к URL-адресу службы. Это обычная практика с SOAP.

11.03.2014
  • Привет Антон. Я знаю, что у вас нет этих инструментов, я искал один, ха-ха. Мне просто нужно передать эти % заполнители в мои текущие переменные, которые у меня есть в потоке мула. Должен ли я писать код Java или я могу получить доступ к входящим переменным мыла через MEL? 11.03.2014
  • См. пример ddossot для прокси-сервиса: github.com/ddossot/mule-in-action-2e/blob/master/chapter07/src/ . Вы можете использовать выражения xpath после преобразователя dom-to-xml для доступа к данным. Конечно, вы можете просто получить данные вызова мыла непосредственно из входящего http и пропустить использование материала Mule SOAP. Это просто HTTP POST. Например, если вам не нужна какая-либо обработка ошибок... :) 11.03.2014
  • Да, я просто хочу получить эти вары. система на другой стороне делает мыльный вызов в этом формате. Могу ли я получить эти переменные как входящий параметр или они входят в качестве полезной нагрузки, и я должен вытащить их оттуда? 11.03.2014
  • Большое спасибо Антон. Мне удалось найти правильный xpath, но теперь, если я попытаюсь использовать его в полезной нагрузке после конечной точки HTTP, я получаю сообщение об ошибке, что это неправильный тип. Так что я думаю, что мне нужно преобразовать его. какой правильный трансформатор использовать? Еще раз спасибо за вашу помощь с Mule. 12.03.2014
  • Я получаю эту ошибку: полезная нагрузка сообщения имеет тип: ContentLengthInputStream 12.03.2014
  • Хорошо, я получил полезную нагрузку. Я следовал этому ответу stackoverflow.com/questions/9334912/ . Но я знаю, что нужно найти, какой тип данных нужен XPath. 12.03.2014
  • преобразование объекта в строку после входящего http должно быть в порядке 12.03.2014
  • Я получаю эту ошибку, когда пытаюсь выполнить XPath: выполнение выражения xpath('//soapenv:Envelope/soapenv:Body/ws:sendTextMessage/text/text()').text не удалось. (org.mule.api.expression.ExpressionRuntimeException). Полезная нагрузка сообщения имеет тип: String 12.03.2014
  • Я знаю, что XPath правильный, поскольку я проверил его на chris.photobooks.com/xml/default.htm. 12.03.2014
  • Итак, полезная нагрузка должна быть XML-документом или экземпляром DOM. Я использовал объект для XML, и я все еще получаю ошибку строки. Аааа это так расстраивает. 12.03.2014
  • Это также может быть строка, в приведенном выше сообщении об ошибке просто указано, что полезная нагрузка является строкой, а не то, что она является причиной ошибки. Пожалуйста, создайте новый вопрос для использования xpath, если вы не можете решить это самостоятельно. Проблем может быть много. Если вы используете ‹set-payload value=#[xpath://text/text()]/› в строке с вашим xml, он должен правильно установить полезную нагрузку. 12.03.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..