我知道如何使用Payloadfactory介体列出所有输入参数,但我的后端服务有许多输入参数(120个输入参数)。我想使用PayloadFactory Mediator只更改少量输入参数而不在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是(更改'a'元素并自动传递其他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 :(得分:0)
以下示例应符合此要求。如果您需要创建具有不同数量的输入参数的有效负载工厂,则需要有选择地执行此操作。
// Define your Vertex class
case class Vertex(lat: Float, long: Float)
// Define your polygon class
case class Polygon(vertices: List[Vertex])
val lines = sc.textFile("polygon_file_path")
// RDD of (id, polygon) pair
// RDD[(String, Polygon)]
val polygonsWithId = lines
.map(l => {
val (id :: polyStr :: Nil) = l.drop(1).dropRight(1).split('^').toList
val polyVerticesStr = polyStr.split('(').apply(1)
val polyVertices = polyVerticesStr.split(',')
.toList
.map(s => s.split(' '))
.map(a => Vertex(a(0).toFloat, a(1).toFloat))
val polygon = Polygon(polyVertices)
(id, polygon)
})
答案 1 :(得分:0)
谢谢simar!
我使用了rich mediator来修改现有的有效负载。
溶液:
<property name="test" value="test" scope="default" type="STRING"/>
<enrich>
<source type="property" clone="true" property="test"/>
<target xpath="//a"/>
</enrich>