2016-08-09 30 views
0

我知道如何使用Payloadfactory中介列出所有输入参数,但我的后端服务有许多输入参数(120个输入参数)。我想使用PayloadFactory Mediator只更改少数输入参数,而无需在payloadfactory参数中列出其他元素。Wso2 ESB - 带有少量参数的Payloadfactory

用于后端服务样品输入的xml:

<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> 

我payloadfactory被(改变 '一个' 元素和自动传递其他119层的元件,而不列出它们)

<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> 

当我打电话给我的代理服务时,发生此错误:

<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> 

在此先感谢

+0

使用充实medaitor改变只是一些元素 – simar

+0

你能写下来的例子吗? (用于此回音服务) –

回答

0

谢谢simar!

我已经使用了富媒体修改现有的有效载荷。

解决方案:

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

下面的示例应该适用于此要求。如果您需要使用不同数量的输入参数创建有效载荷工厂,则需要选择性地执行此操作。

<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>