0

私は 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ファイルのさまざまなメッセージビルダーを変更してみました。

前もって感謝します。

4

1 に答える 1