我在WSO2 ESB上遇到有效负载问题。
当我发送SOAP 1.1消息时,我的端点正确回答。
我创建了一个代理,它接受参数并将其转换为SOAP。然后通过我的终端发送它。
问题是我的消息是正确形成的(我想是这样)但我总是有这个错误:
错误 - 构建直通流时RelayUtils出错 org.apache.axiom.om.OMException:javax.xml.stream.XMLStreamException: [row,col]处的ParseError:[1,1]消息:不允许使用内容 序言
如果我在Slashdot:WSO2 ESB Content is not allowed in prolog exception in a OutSecuence上检查这个似乎可能是某种类型的内容类型错误,但即使我在我的端点中定义format =“soap11”,似乎信封是SOAP 1.2 < / p>
我的代理定义是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="Test11"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<payloadFactory media-type="xml">
<format>
<ns2:QueryReqWS xmlns:ns2="http://hiddenUrl.com/">
<TOTO xmlns="urn:hl7-org:v3"
ITSVersion="XML_1.0"
xmlns:mif="urn:hl7-org:v3/mif"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hl7-org:v3 urn:hl7-org:v3 file:/schemas/TOTO.xsd">
<id root="1234"/>
...
<controlActEvent classCode="CACT" moodCode="EVN">
...
<queryByParameter>
<queryId root="456"/>
<responseModalityCode code="R"/>
<parameterList>
<Gender>
<value code="$1" >
</value>
</Gender>
<BirthDate>
<value xsi:type="TS" specializationType="TS.FULLDATE" value="$2"/>
</BirthDate>
<Name>
<value>
<given qualifier="IN">$3</given>
<family>$4</family>
</value>
</Name>
</parameterList>
</queryByParameter>
</controlActEvent>
</TOTO>
</ns2:QueryReqWS>
</format>
<args>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:gender)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:birthday)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:lastname)"/>
<arg xmlns:ns2="http://hiddenUrl.com/"
evaluator="xml"
expression="string(//ns2:testRequest/ns2:person/ns2:firstname)"/>
</args>
</payloadFactory>
<log level="full"/>
</inSequence>
<outSequence>
<log level="full"/>
<send/>
</outSequence>
<faultSequence/>
<endpoint>
<address uri="http:/test/testMessage/Unknown" format="soap11">
</endpoint>
</target>
<description/>
</proxy>
示例消息如下:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<ns2:testRequest xmlns:ns2="http://com.hiddenurl/">
<ns2:person>
<ns2:gender>M</ns2:gender>
<ns2:lastname>Man</ns2:lastname>
<ns2:firstname>Spider</ns2:firstname>
<ns2:birthday>20150301</ns2:birthday>
</ns2:person>
</ns2:testRequest>
</soap:Body>
</soap:Envelope>
Soap 1.1示例消息:
<id root="1234"/>
...
<controlActEvent classCode="CACT" moodCode="EVN">
...
<queryByParameter>
<queryId root="456"/>
<responseModalityCode code="R"/>
<parameterList>
<BirthDate>
<value xsi:type="TS" specializationType="TS.FULLDATE" value="20150301"/>
</BirthDate>
<Gender>
<value code="M" >
</value>
</Gender>
<Name>
<value>
<given qualifier="IN">Spider</given>
<family>Man</family>
</value>
</Name>
</parameterList>
</queryByParameter>
</controlActEvent>
</TOTO>
</ns2:QueryReqWS>
</soapenv:Body>
</soapenv:Envelope>
非常感谢你的帮助。
答案 0 :(得分:1)
似乎ESB无法正确构建消息。请检查您的内容类型标头是text / xml还是application / xml。启用wirelog如下。
击落ESB实例。 找到log4j.properties文件驻留在$ ESB_HOME / repository / conf目录下并取消注释以下行
log4j.logger.org.apache.synapse.transport.http.wire=DEBUG
然后在此处粘贴ESB控制台日志。您可以在那里看到ContentType标题。
还有符号&#39;&gt;&gt;&#39;给出写入ESB的内容和&#39;&lt;&lt;&lt;&lt;&lt;&#给出了ESB写的内容。