2016-08-09 4 views
0

Ich kann Payloadfactory Mediator mit der Auflistung aller Eingabeargumente verwenden, aber mein Back-End-Dienst hat viele Eingabeargumente (120 Eingabeargumente). Ich möchte PayloadFactory Mediator verwenden, um nur einige wenige Eingabeargumente zu ändern, ohne andere Elemente in den Payloadfactory-Argumenten aufzulisten.Wso2 ESB - Payloadfactory mit ein paar Argumente

Abtastwerteingang XML für Back-End-Service:

<p:echoStringArrays xmlns:p="http://echo.services.core.carbon.wso2.org"> 
    <!--0 or more occurrences--> 
    <a>teststr1</a> 
    <!--0 or more occurrences--> 
    <b>teststr2</b> 
    <!--0 to 1 occurrence--> 
     <c>1</c> 
    </p:echoStringArrays> 

My payloadfactory wird (sich ändern 'ein' Element und übergeben andere 119 Elemente automatisch ohne sie listing)

<inSequence> 
    <payloadFactory media-type="xml"> 
     <format> 
      <p:echoStringArrays xmlns:p="http://echo.services.core.carbon.wso2.org"><!--0 or more occurrences--><a xmlns="">test</a> 
      </p:echoStringArrays> 
     </format> 
     <args/> 
    </payloadFactory> 
    </inSequence> 
    <outSequence> 
    <send/> 
    </outSequence> 
    <endpoint> 
    <address uri="http://desktop-iofs8c5:8280/services/echo"/> 
    </endpoint> 

Wenn ich meinen Proxy-Dienst anrufe, tritt dieser Fehler auf:

<soapenv:Fault xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> 
<soapenv:Code> 
    <soapenv:Value>soapenv:Receiver</soapenv:Value> 
</soapenv:Code> 
<soapenv:Reason> 
    <soapenv:Text xml:lang="en-US">unknown</soapenv:Text> 
</soapenv:Reason> 
<soapenv:Detail/> 
</soapenv:Fault> 

Vielen Dank im Voraus

+0

Verwendung enrich medaitor nur einige der Elemente ändern – simar

+0

Können Sie ein Beispiel aufschreiben? (für diesen Echo-Dienst) –

Antwort

0

Danke simar!

Ich habe Anreicher Mediator verwendet, um die vorhandene Nutzlast zu ändern.

Lösung:

<property name="test" value="test" scope="default" type="STRING"/> 
    <enrich> 
     <source type="property" clone="true" property="test"/> 
     <target xpath="//a"/> 
    </enrich> 
0

Folgendes Beispiel sollte für diese Anforderung funktionieren. Wenn Sie Nutzlastfabriken mit einer anderen Anzahl von Eingabeparametern erstellen müssen, müssen Sie dies selektiv tun.

<payloadfactory> 
     <format> 
       <m:echoStringArrays xmlns:m="http://echo.services.core.carbon.wso2.org"> 
        <m:a>teststr1</m:a> 
        <m:b>teststr2</m:b> 
        <m:c>teststr3</m:c> 
       </m:echoStringArrays> 
      </format> 
</payloadfactory>