Динамическое добавление параметров пути http в wso2 esb
У нас есть прокси-служба, которая использует транспорт jms для получения сообщений. Полученные сообщения должны быть отправлены на внутреннюю службу с помощью HTTP-запроса POST. Следующее делается на сообщениях
- преобразование xslt для извлечения определенных полей
- задайте тип сообщения application/json
- отправить в конечную точку
Конечная точка службы REST должна иметь параметр path, добавляемый динамически с использованием одного из значений, входящих в состав входного сообщения. из jms. Url будет выглядеть следующим образом
http://<server-ip>/service/<client>
. Здесь значение для "клиента" приходит как часть сообщения.
Как мы можем динамически добавить путь param, используя wso2 esb?
2 ответа:
Я полагаю, что то, что вы ищете, - это свойство
REST_URL_POSTFIX
. Если вы зададите это свойство, то значение будет добавлено к url-адресу конечной точки rest.Его можно определить следующим образом с областью действия axis2.
<property name="REST_URL_POSTFIX" expression="//client" scope="axis2" type="STRING"/>
Пример этого можно найти в этом руководстве, используя REST с прокси-сервисом .
EDIT: Ниже приведен пример использования простого прокси-сервера с запросом POST с использованием curl. Предоставление в соответствии с комментариями. Здесь я вызываю службу jaxrs_basic rest в WSO2 сервер приложений.
curl -H "Content-Type: application/xml" -H "Accept: application/json" -d "<Customer><name>KasunG</name></Customer>" http://localhost:8281/services/new1/
.
curl -H "Content-Type: application/json" -H "Accept: application/json" -d "{ 'Customer' : { 'name' : 'KasunG' } } " http://localhost:8281/services/new1/
.
<?xml version="1.0" encoding="UTF-8"?> <proxy xmlns="http://ws.apache.org/ns/synapse" name="new1" transports="https http" startOnLoad="true" trace="disable"> <description/> <target> <inSequence> <property name="REST_URL_POSTFIX" value="customers" scope="axis2" type="STRING"/> <property name="ContentType" value="text/xml" scope="axis2" type="STRING"/> <switch source="$axis2:HTTP_METHOD"> <case regex="GET"> <property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/> </case> <case regex="POST"> <property name="messageType" value="application/json" scope="axis2"/> <property name="ContentType" value="application/JSON" scope="axis2" type="STRING"/> <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/> </case> <default/> </switch> <send> <endpoint> <address uri="http://localhost:8888/jaxrs_basic/services/customers/customerservice" format="rest"/> </endpoint> </send> </inSequence> <outSequence> <property name="messageType" value="application/json" scope="axis2"/> <send/> </outSequence> </target> </proxy>
Я думаю, что ссылки [1] & [2]помогут вам установить jms с прокси WSO2... Для динамического добавления path param к url используйте ссылку [3], она предназначена для XML-файла конфигурации. аналогично этому вы можете назначить ту часть сообщения, чтобы добавить свойство добавить, что URL-адрес...
[1] http://docs.wso2.org/wiki/display/ESB460/Publish-Subscribe+%28Pub-Sub%29 + with+JMS
[2] http://wso2.org/library/articles/2011/11/wso2-esb-example-two-wayrequestresponse-semantic-jms
[3] как динамически маршрутизировать сообщение в WSO2 ESB на основе файла конфигурации XML
Спасибо,
Мохан