Динамическое добавление параметров пути http в wso2 esb


У нас есть прокси-служба, которая использует транспорт jms для получения сообщений. Полученные сообщения должны быть отправлены на внутреннюю службу с помощью HTTP-запроса POST. Следующее делается на сообщениях

  1. преобразование xslt для извлечения определенных полей
  2. задайте тип сообщения application/json
  3. отправить в конечную точку

Конечная точка службы REST должна иметь параметр path, добавляемый динамически с использованием одного из значений, входящих в состав входного сообщения. из jms. Url будет выглядеть следующим образом http://<server-ip>/service/<client>. Здесь значение для "клиента" приходит как часть сообщения.

Как мы можем динамически добавить путь param, используя wso2 esb?

2 2
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

Спасибо,

Мохан