【问题标题】:Dynamically change endpoint address in WSO2 ESB在 WSO2 ESB 中动态更改端点地址
【发布时间】:2013-04-08 10:07:04
【问题描述】:

如何动态设置端点地址?

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

如何用这个值设置地址的URI值?

【问题讨论】:

    标签: dynamic wso2 uri wso2esb endpoint


    【解决方案1】:

    您可以像这样创建端点

    <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

    (顺便说一句,如果您使用的是网络编辑器,它会抱怨 & .. 它的 buggy .. 将其保存为

    &amp; 
    

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

    【讨论】:

    • 如果URI不是http?
    【解决方案2】:

    使用 Header meditaor 设置“to”标头并使用默认端点。检查this post 以获取示例。

    【讨论】:

    • 那个样本对我有用!我所做的唯一更改是从顶部删除 标记,并将它们添加到底部的 标记中。它看起来像这样:
      services.samples/xsd" xmlns:m0="services.samples" name="To" expression="fn:concat(get-property('server'),get- property('service'))"/>
    【解决方案3】:

    使用header mediator 将“收件人”地址标头设置为您从分配的属性中提取的值。

    【讨论】:

    • 感谢 Shelan Perera 先生的快速回复。我为此问题使用了标头调解器,但我想使用端点工件,以便在需要时具有更大的灵活性。如何在端点中使用 xpath 表达式?我使用了端点模板,但是当我在控制台中从模板创建端点时,只能在其参数中设置值字段而不是表达式。我还创建了 EndPoint 再见地址并使用 get-property('EPadd') 设置表达式,但它不起作用。我不知道在创建 EndPoint 时应该在 Xpath 字段中写什么!
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      这个方法对我很有效。

      我需要创建波纹管动态网址

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-07
        相关资源
        最近更新 更多