WSO2 ESB如何独立处理肥皂操作

时间:2014-07-24 20:24:11

标签: soap wso2 wso2esb

我需要"连接"我的肥皂服务的每次操作到休息服务。在wso2-esb中,我已经定义了一个带有预定义wsdl的新代理服务,到目前为止一直很好,我已经发布了该服务,我可以"看到" soap-ui的操作。

现在我需要定义(我认为)一个In-secuence,我的第一个问题是我需要区分op1,op2和op3,因为每个soap操作都会转到不同的休息服务

根据客户端调用的操作,我需要什么样的中介来分割我的请求?

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:1)

这个场景与"Message Router" Pattern非常相似,你必须使用SOAP Header值进行路由,而不是消息内容中的值作为EIP。

好吧,要获得调用SOAP操作,您需要获取SOAP Header值,这里是一个示例代理:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="proxy_router_by_header"
       transports="http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
         <property name="MY_SOAP_ACTION"
                   expression="get-property('Action')"
                   scope="default"
                   type="STRING"/>
         <log level="custom">
            <property name="* Action sample1" expression="get-property('MY_SOAP_ACTION')"/>
         </log>
         <log level="custom">
            <property name="* Action sample2" expression="$ctx:MY_SOAP_ACTION"/>
         </log>
         <filter source="get-property('MY_SOAP_ACTION')" regex=".*mediate.*">
            <then>
               <log level="custom">
                  <property name="* Evaluation" value=" inside of filter TRUE"/>
               </log>
            </then>
            <else>
               <log level="custom">
                  <property name="* Evaluation" value=" inside of filter FALSE"/>
               </log>
            </else>
         </filter>
      </inSequence>
   </target>
   <description/>
</proxy>

我希望这对你有所帮助。 问候。