WSO2 ESB:动态改变终点地址

时间:2013-04-08 10:07:04

标签: dynamic wso2 uri wso2esb endpoint

如何动态设置端点地址

我在运行时将端点地址设置为属性,需要将端点地址的URI替换为其值。

如何使用此值设置地址的URI值?

5 个答案:

答案 0 :(得分: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>

应该会将您带到网址http://jarhedz.com/viewtopic.php?f=2&t=39

(顺便说一句,如果你正在使用网页编辑器,它会抱怨&amp; ..它的马车就像地狱一样......保存为

&amp; 

..并将其保存为&amp;或使用javascript设置属性

答案 1 :(得分:2)

使用Header meditaor设置“to”标题并使用默认endpoint..Check this post获取样本。

答案 2 :(得分:1)

使用header mediator设置&#34; To&#34;地址标题,包含从指定属性中提取的值。

答案 3 :(得分:0)

当服务器未发布其WSDL时,请参阅Myobis评论here。试了addPort没有成功。

答案 4 :(得分:0)

这种方法对我有用。

我需要创建下面的动态网址

  

http://localhost:8787/ {动态参数}

在终点内部url就像这样

  

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

将“测试”变量设置为动态参数(如果需要设置“表达式”值设置)。在属性介体中设置“test”值。(我做了这个insideproxy服务)

<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参数.Ex - :

  

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