WSO2中的动态端点

时间:2012-01-11 08:03:33

标签: esb wso2

我有一个问题,首先,我创建了一个服务,它将为结果提供一个特定的端点。获得特定端点后,我想调用该服务。但我不知道该怎么做。我尝试模板Endpoint,但仍然无法在Mediator中使用。我已经看到了http://wso2.org/project/esb/java/4.0.0/docs/templates.html中的文档,它说“使用端点模板是ESB中使用的端点配置的一种通用形式。与序列模板不同,端点模板总是使用'​​$'前缀值进行参数化(即: - 不是xpath表达式)“

以下是我的模板代码:

<template xmlns="http://ws.apache.org/ns/synapse" name="TemplateEndPoint">
   <endpoint name="$name">
      <address uri="$uri">
         <suspendOnFailure>
            <progressionFactor>1.0</progressionFactor>
         </suspendOnFailure>
         <markForSuspension>
            <retriesBeforeSuspension>0</retriesBeforeSuspension>
            <retryDelay>0</retryDelay>
         </markForSuspension>
      </address>
   </endpoint>
</template>

以下是代理的代码:

<send>
  <endpoint template="TemplateEndPoint">
    <parameter name="uri" value="http://localhost:8080/axis2/services/TaskService.TaskServiceHttpEndpoint/getTask" />
    <parameter name="name" value="Testing" />
  </endpoint>
</send>

当我在代理中硬编码时,它接受代码,但是当我回顾设计/源视图时,它会回到。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我认为你正在寻找这个。您可以使用标头介体

设置To参数

&lt; header name =“To”expression =“fn:concat('mailto:',get-property('email'))”/&gt;

您也可以查看this link

答案 1 :(得分:0)

当您首次调用发送端点详细信息的服务时,请使用xslt介体/丰富介体来选择端点详细信息。然后使用标头介体并为该端点设置“To”值

答案 2 :(得分:0)

似乎设置To标头仅在服务使用所需传输的侦听器以及发送方时才有效。因此,如果您尝试在仅侦听http的服务上执行动态mailto端点,它会尝试通过http传输路由mailto,但它不起作用。

作为解决此问题的方法,我将端点地址设置为服务器电子邮件帐户的地址(这也提供了发送电子邮件的审计跟踪),并在传输级别设置CC或BCC属性。 e.g:

<property name="mailAddress" expression="/xpath/to/email/address" scope="default"/>

然后

<property name="CC" expression="get-property('mailAddress')" scope="transport" />

<property name="BCC" expression="get-property('mailAddress')" scope="transport" />

您可以直接在CC属性中获取电子邮件地址,但这样做可以让您对地址属性执行验证。