私は wso2esb 4.8.1 を使用しているため、クライアントは以下のような未形成の xml を送信しています。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:open="http://www.openuri.org/">
<soapenv:Header>
<r:valid xmlns:r="http://webmail.w3school.com/use">
<r:user xsi:type="xsd:string">admin</r:user>
<r:password xsi:type="xsd:string">admin</r:password>
</r:valid>
</soapenv:Header>
<soapenv:Body>
<s:Payload xmlns:s="http://www.w3school.com">
<s:request>
<s:name>henry</s:name>
<s:value>2345</s:value>
</s:request>
</s:Payload>
</soapenv:Body>
</soapenv:Envelope>
上記のリクエストでは、 xsi Prefix 名前空間が宣言されていないため、wso2esb サーバーで以下のようなエラーが発生します。
TID: [0] [ESB] [2015-01-25 20:42:50,774] ERROR {org.apache.synapse.transport.nhttp.ServerWorker} - Error processing POST request {org.apache.synapse.transport.nhttp.ServerWorker}
org.apache.axis2.AxisFault: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[4,41]
Message: http://www.w3.org/TR/1999/REC-xml-names-19990114#AttributePrefixUnbound?r:user&xsi:type&xsi
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:180)
at org.apache.synapse.transport.nhttp.ServerWorker.processEntityEnclosingMethod(ServerWorker.java:459)
at org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:279)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
t java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException:ParseError at [row,col]:[4,41]
Message: http://www.w3.org/TR/1999/REC-xml-names-19990114#AttributePrefixUnbound?r:user&xsi:type&xsi
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
at org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:336)
これは属性であるため、その名前空間を宣言していません。 java.lang.Thread.run(Thread.java:744) で原因: org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException:ParseError at [row,col]:[4,41] メッセージ: http://www.w3.org/TR/1999/REC-xml-names-19990114#AttributePrefixUnbound?r:user&xsi:type&xsi
wso2esbでxml検証を無効にする方法、またはこの種のメッセージをどのように処理するか、名前空間が正常に機能していると宣言した場合、私のレガシーシステムは、他のESBの同じ要求が正常に機能している場所でこれを送信していません。
Http、NHttpトランスポートを使用して、axis2ファイルのさまざまなメッセージビルダーを変更してみました。
前もって感謝します。