配列を含むオブジェクトを返すwebserviceがあります。私がwsdl4jによって生成したBeanクラス。私がサービスを呼び出すと、オブジェクトは常に正しいフィールドを返しますが、配列には常に1つのエントリしかありません。 Webサービスの応答には2つのエントリがありますが、Axisのどこかに2番目のエントリが失われます。サービスはうまくいくようですが、Axisコード内の処理だけが間違っているようです。Axis 1.4は配列を逆シリアル化しません。
これは、だから、最後に、私は唯一のProjectDataResultのCentreBean配列に「Center2」を取得レスポンスボディの内容
[<projectDataReturn xsi:type="ns4:ProjectDataResult" xmlns:ns4="http://results.ws.appserver.secutrial.de" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<errorCode xsi:type="xsd:int">0</errorCode>
<message xsi:type="soapenc:string" xsi:nil="true" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"/>
<statusCode xsi:type="xsd:int">1</statusCode>
<project xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">HAHA</project>
<centres xsi:type="ns5:CentreBean" xmlns:ns5="http://beans.eo.secutrial.de"><name xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">Center1</name></centres>
<centres xsi:type="ns6:CentreBean" xmlns:ns6="http://beans.eo.secutrial.de"><name xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">Center2</name></centres>
</projectDataReturn>]
です。私はシングルステップのデバッグを試みましたが、成功しませんでした。
RPCElementのパラメータが間違っているメソッドRPCElement.publishToHandler()が見つかりました。このメソッドはいくつかのSAXイベント(org.apache.axis.message.SAX2EventRecorder)を再生し、両方のCentreBeansが処理されますが、最後のものだけが結果の一部になります。
誰でもこれを修正しましたか?
可能ですが、私はサービスを変更することはできません。外部サイトによって管理されています。 – arothe
私はhttp://stackoverflow.com/a/37549073/1503313でこの問題を解決しました。 – arothe