Динамически изменять адрес конечной точки в WSO2 ESB

Как я могу динамически установить адрес конечной точки?

Я установил адрес конечной точки в свойстве во время выполнения, и мне нужно заменить URI адреса конечной точки на его значение.

Как я могу установить значение URI адреса с этим значением?


person Ramtin Ramtin    schedule 08.04.2013    source источник


Ответы (5)


Вы можете создать свою конечную точку, например

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="MyEndpoint">
   <http uri-template="{uri.var.full}?f={uri.var.f}{+uri.var.extra}" method="put">
   </http>
</endpoint>

Затем перед вызовом конечной точки «MyEndpoint» установите свойства .. свойства, которые нужно проанализировать для конечной точки, должны начинаться с uri.

Я также обнаружил, что если вы поставите + перед именем свойства, URI не закодирует его, поэтому он удобен для создания параметров на лету .. в противном случае для известных параметров вы можете сделать то же самое для параметра f

так .. что-то вроде

<property name="uri.var.full" value="http://jarhedz.com/viewtopic.php"/>
<property name="url.var.f" value="2"/>
<property name="uri.var.extra" value="&t=39"/>
<send>
    <endpoint key="MyEndpoint"></endpoint>
</send>

должен привести вас к URL-адресу http://jarhedz.com/viewtopic.php?f=2&t=39

(кстати, как примечание, если вы используете веб-редактор, он будет жаловаться на & .. его чертовски глючит .. сохраните его как

&amp; 

.. и это сохраняет его как & или устанавливает свойство с помощью javascript)

person Brian    schedule 04.06.2015
comment
Если URI не http? - person Marco S.; 31.01.2018

Используйте Meditaor заголовка, чтобы установить заголовок «to» и использовать конечную точку по умолчанию .. Проверьте этот пост для примера.

person Ratha    schedule 09.08.2013
comment
Этот образец сработал для меня! Единственное изменение, которое я сделал, чтобы заставить его работать, - это удалить теги ‹endpoint› и ‹default› сверху и добавить их внутри тега ‹send› внизу. Это выглядело бы так: ‹header xmlns: m1 = services.samples / xsd xmlns: m0 = services.samples name = To expression = fn: concat (get-property ('server'), get-property ('service') )) / ›‹Send› ‹endpoint›‹ default / ›‹/endpoint› ‹/send› ‹/inSequence› - person lsantsan; 24.03.2015

Используйте посредник заголовка, чтобы задать в заголовке адреса «Кому» значение, которое вы выписка из вашего назначенного имущества.

person Shelan Perera    schedule 09.04.2013
comment
Спасибо, господин Шелан Перера, за быстрый ответ. Я использовал посредник заголовка для этой проблемы, но я хочу использовать артефакт конечной точки, чтобы при необходимости у меня было больше гибкости. как я могу использовать выражение xpath в конечной точке? Я использовал шаблон конечной точки, но когда я создаю конечную точку из шаблона в консоли, в его параметре можно установить только поле значения, а не выражение. также я создаю прощальный адрес EndPoint и устанавливаю Expression с помощью свойства get ('EPadd'), но это не работает. я не знаю, что должно быть написано в поле Xpath при создании EndPopint! - person Ramtin Ramtin; 10.04.2013

Если сервер не публикует свой WSDL, см. Комментарий Myobis здесь. Пробовал addPort безуспешно.

person karl    schedule 26.01.2014

Этот способ у меня сработал правильно.

Мне нужно создать ниже динамический URL

http://localhost:8787/ {динамический параметр}

URL-адрес конечной точки выглядит следующим образом

http://localhost:8787/ {uri.var.servicepath}

Установите переменную test в качестве моего динамического параметра (если вам нужно установить значение выражения, задайте его). Установите "тестовое" значение внутри посредника свойств. (Я сделал эту службу внутри прокси)

<property name="uri.var.servicepath" scope="default" type="STRING" value="test"/>

создать конечную точку

Здесь я создал конечную точку HTTP

<endpoint name="ServiceEP" xmlns="http://ws.apache.org/ns/synapse">
   <http method="post" uri-template="http://localhost:8787/{uri.var.servicepath}"/>
</endpoint>

Затем добавьте эту конечную точку в свою прокси-службу или API.

<send>
   <endpoint key="ServiceEP"/>
</send>

Наконец, ваш прокси выглядит так

<inSequence>
   <property name="uri.var.servicepath" scope="default" type="STRING" 
   value="test"/>

   <send>
      <endpoint key="SurepayVASAppsEP"/>
    </send>
</inSequence>

Таким образом вы можете изменить каждый параметр url.

http: // {uri.var.hostname}: {uri.var.port} / {uri.var.servicepath}

person Priyantha    schedule 20.07.2017