Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 轴1.4不';t反序列化数组,对吗_Java_Arrays_Web Services_Axis - Fatal编程技术网

Java 轴1.4不';t反序列化数组,对吗

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

我有一个webservice,它返回一个包含数组的对象。wsdl4j生成的Bean类。如果我调用服务,对象总是返回正确的字段,但数组总是只有一个条目。webservice响应有两个条目,但在Axis中的某个位置,第二个条目将丢失。服务似乎很好,只是Axis代码内的处理似乎有误

这是响应主体的内容

[<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覆盖。

这是可能的,但我无法更改服务,它由外部站点管理。