WSO2ESB代理 - 有效载荷中介自动填充

时间:2015-08-13 03:07:42

标签: java xml web-services proxy wso2esb

我想用第一个服务的响应来填充有效负载中介,这个有效负载将被发送到另一个服务。我使用了上下文表达,一切似乎都正确。但是有效载荷调解器没有填充。当构建的消息发送到第二个服务时,有效负载保持空白。我使用下面显示的ctx路径表达式来填充。

以下是代理服务配置

 <?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="CreditProxy"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <log level="full">
            <property name="sequence" value="inSequence - request for CreditProxy"/>
         </log>
         <property xmlns:sam="http://samples.esb.wso2.org"
                   name="ORG_ID"
                   expression="//sam:credit/sam:id"/>
         <property xmlns:sam="http://samples.esb.wso2.org"
                   name="ORG_AMOUNT"
                   expression="//sam:credit/sam:amount"/>
         <enrich>
            <source type="inline" clone="true">
               <sam:get xmlns:sam="http://samples.esb.wso2.org">
                  <sam:id>?</sam:id>
               </sam:get>
            </source>
            <target type="body"/>
         </enrich>
         <enrich>
            <source type="property" clone="true" property="ORG_ID"/>
            <target xmlns:sam="http://samples.esb.wso2.org" xpath="//sam:get/sam:id"/>
         </enrich>
         <log level="full">
            <property name="sequence" value="inSequence - request for PersonInfoService"/>
         </log>
         <property name="STATE" value="PERSON_INFO_REQUEST"/>
         <send>
            <endpoint>
               <address uri="http://127.0.0.1:9764/services/PersonInfoService/"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full"/>
         <property xmlns:ns="http://samples.esb.wso2.org"
                   xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
                   xmlns:ax23="http://samples.esb.wso2.org/xsd"
                   name="address"
                   expression="/soapenv:Envelope/soapenv:Body/ns:getResponse/ns:return/ax23:address"
                   scope="default"
                   type="STRING"/>
         <property xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
                   xmlns:ns="http://samples.esb.wso2.org"
                   xmlns:ax23="http://samples.esb.wso2.org/xsd"
                   name="id"
                   expression="/soapenv:Envelope/soapenv:Body/ns:getResponse/ns:return/ax23:id"
                   scope="default"
                   type="STRING"/>
         <property xmlns:ns="http://samples.esb.wso2.org"
                   xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
                   xmlns:ax23="http://samples.esb.wso2.org/xsd"
                   name="name"
                   expression="/soapenv:Envelope/soapenv:Body/ns:getResponse/ns:return/ax23:name"
                   scope="default"
                   type="STRING"/>
         <payloadFactory media-type="xml">
            <format>
               <p:credit xmlns:p="http://samples.esb.wso2.org"><!--0 to 1 occurrence--><ax25:info xmlns:ax25="http://samples.esb.wso2.org"><!--0 to 1 occurrence--><xs:amount xmlns:xs="http://samples.esb.wso2.org/xsd">?</xs:amount>
                     <!--0 to 1 occurrence--><ax25:personInfo xmlns:ax25="http://samples.esb.wso2.org/xsd"><!--0 to 1 occurrence--><xs:address xmlns:xs="http://samples.esb.wso2.org/xsd">$1</xs:address>
                        <!--0 to 1 occurrence--><xs:id xmlns:xs="http://samples.esb.wso2.org/xsd">$2</xs:id>
                        <!--0 to 1 occurrence--><xs:name xmlns:xs="http://samples.esb.wso2.org/xsd">$3</xs:name>
                     </ax25:personInfo>
                  </ax25:info>
               </p:credit>
            </format>
            <args>
               <arg evaluator="xml" expression="$ctx:address"/>
               <arg evaluator="xml" expression="$ctx:id"/>
               <arg evaluator="xml" expression="$ctx:name"/>
            </args>
         </payloadFactory>
         <send buildmessage="true">
            <endpoint>
               <address uri="http://127.0.0.1:9764/services/CreditService/"/>
            </endpoint>
         </send>
      </outSequence>
      <endpoint>
         <address uri="http://127.0.0.1:9764/services/PersonInfoService/"/>
      </endpoint>
   </target>
   <publishWSDL uri="file:./repository/samples/resources/proxy/CreditProxy.wsdl"/>
   <description/>
</proxy>

这可能是什么原因?

0 个答案:

没有答案