Java 轴1.4不';t反序列化数组,对吗
我有一个webservice,它返回一个包含数组的对象。wsdl4j生成的Bean类。如果我调用服务,对象总是返回正确的字段,但数组总是只有一个条目。webservice响应有两个条目,但在Axis中的某个位置,第二个条目将丢失。服务似乎很好,只是Axis代码内的处理似乎有误 这是响应主体的内容Java 轴1.4不';t反序列化数组,对吗,java,arrays,web-services,axis,Java,Arrays,Web Services,Axis,我有一个webservice,它返回一个包含数组的对象。wsdl4j生成的Bean类。如果我调用服务,对象总是返回正确的字段,但数组总是只有一个条目。webservice响应有两个条目,但在Axis中的某个位置,第二个条目将丢失。服务似乎很好,只是Axis代码内的处理似乎有误 这是响应主体的内容 [<projectDataReturn xsi:type="ns4:ProjectDataResult" xmlns:ns4="http://results.ws.appserver.secutr
[<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>]
[
0
1.
哈哈
中心1
中心2
]
所以在最后,我只在ProjectDataResult的CentreBean数组中得到“Center2”。我尝试过单步调试,但没有成功
我发现方法RPCElement.publishToHandler()之后,RPCElement的参数是错误的。该方法重放一些SAX事件(org.apache.axis.message.SAX2EventRecorder),两个CentreBean都会被处理,但只有最后一个会成为结果的一部分
有人修复了吗?我想问题在于Web服务的设计 中心应为复杂类型,可发送多个中心数据。(arraytype) 因此,理想情况下,web服务应该已经返回
[<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">
<centre>
<name xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">Center1</name>
</centre>
<centre>
<name xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">Center1</name>
</centre>
</centres>
[
0
1.
哈哈
中心1
中心1
]
所以我想说的是,“centers”应该是一个bean,它有一个数组类型的“center”bean,每个center都有一个字符串类型名称
如果webservice是以这种方式设计来返回数据的,那么axis将像我上面提到的那样生成存根,并且您将能够以数组的形式获取中心
现在发生的事情是,它运行在两个中心,由于它不是数组类型,当它读取第二个值时,Centre1值将被Centre2覆盖。这是可能的,但我无法更改服务,它由外部站点管理。