在我的WSO2代理服务中添加帖子请求

时间:2013-06-22 11:14:25

标签: wso2 esb wso2esb synapse

我创建了一个代理服务,它使用xslt介体转换消息,然后转换为JSON, 我现在想要在休息网络服务中发布JSON消息,我怎么能直接在我的代理服务中做到这一点? 这是我的代理服务:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="CategoryProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <property name="Authorization" expression="fn:concat('Basic ', base64Encode('admin:admin'))" scope="transport" type="STRING"/>
         <send>
            <endpoint>
               <address uri="http://localhost:8068/database/library.author/301"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <xslt key="conf:/ressources/catXsl.xsl"/>
         <property name="messageType" value="application/json" scope="axis2" type="STRING"/>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
   <description></description>
</proxy>

我希望此代理发送的邮件在其余的网络资源中发布,我如何在我的代理中执行此操作?

1 个答案:

答案 0 :(得分:0)

看起来您正在寻找服务链,您可以通过两种方式实现这一目标:

1)使用接收序列

  <inSequence>
     <property name="Authorization" expression="fn:concat('Basic ', base64Encode('admin:admin'))" scope="transport" type="STRING"/>
     <send receive="receivingSeqForChaining">
        <endpoint>
           <address uri="http://localhost:8068/database/library.author/301"/>
        </endpoint>
     </send>
  </inSequence>

您可以在接收序列中定义所需的任何操作序列。此输出将分发给接收序列。如果您不想在outSequence中针对此案例执行任何特定操作,则只需添加一个。

2)使用outSequence触发其他服务调用

您也可以直接从outSequence进行http调用:

<outSequence>
<send>
            <endpoint>
               <http method="get"
                     uri-template="https://www.abc.com/resource/foo"/>
            </endpoint>
         </send>
</outSequence>

希望这有帮助。