将对象数组传递给java web服务

将对象数组传递给java web服务,java,arrays,web-services,axis,Java,Arrays,Web Services,Axis,使用Axis1.41855(根据Axis.jar manifest.mf文件),我没有成功地将对象数组传递给Java web服务。我正在使用IntelliJ IDE来帮助我构建它,生成WSDL,并生成存根 几周前,我成功地创建了一个非常小的web服务,它接受一个简单的请求对象(RequObj,它聚合了一些字符串、整数和double),并返回一个简单的响应对象(RespObj,也包含字符串、整数和double)。这很好用 但是,当我尝试进行更改以将一个RequObj数组而不是单个RequObj传递

使用Axis1.41855(根据Axis.jar manifest.mf文件),我没有成功地将对象数组传递给Java web服务。我正在使用IntelliJ IDE来帮助我构建它,生成WSDL,并生成存根

几周前,我成功地创建了一个非常小的web服务,它接受一个简单的请求对象(RequObj,它聚合了一些字符串、整数和double),并返回一个简单的响应对象(RespObj,也包含字符串、整数和double)。这很好用

但是,当我尝试进行更改以将一个RequObj数组而不是单个RequObj传递给服务时,我得到一个错误:

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
 faultActor: 
 faultNode: 
 faultDetail: 
    {http://xml.apache.org/axis/}hostname:JO007BI-BOU7
org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
。。。等

我向服务器发送/从服务器接收的类非常基本。当我将RequObj和RespObj都减少为一个字符串成员变量(m_REQUESTRING1和m_resString1)时,我得到了完全相同的错误。我在服务器中重新生成了WSDL,在客户机中,我从服务器WSDL文件重新生成了Java存根(显然还有请求和响应类文件)。我显然不是WSDL专家,但WSDL中似乎包含了传递对象数组的正确内容。对于请求和响应对象仅包含字符串的情况,我还附加了WSDL

我真的被困住了,在各种论坛上都没有机会调查这件事。我看过很多你写的文章,但似乎没有一篇能解决这个具体问题……如果我不能解决这个问题,我将不得不返回调用我自己的Java DOM函数,将我的请求/响应转换为XML,我知道这是非标准的

这些类包含我的请求和响应定义。在我所附的文件中,我对这些文件进行了进一步简化,使它们只包含单个m_reqString1和m_resString1,在更简单的情况下,我得到了相同的错误

public class RequObj  implements java.io.Serializable {
    public java.lang.String m_reqString1;
    public int m_reqInt1;
    public double m_reqDouble1;
    public java.lang.String m_reqString2;
    public int m_reqInt2;
    public double m_reqDouble2;
    public java.lang.String m_reqString3;
    public int m_reqInt3;
    public double m_reqDouble3;
    ...
}

public class RespObj  implements java.io.Serializable {
    public java.lang.String m_resString1;
    public int m_resInt1;
    public double m_resDouble1;
    public java.lang.String m_resString2;
    public int m_resInt2;
    public double m_resDouble2;
    public java.lang.String m_resString3;
    public int m_resInt3;
    public double m_resDouble3;
    ...
}

我可以包含任何源文件(如WSDL、客户机代码、服务代码、存根代码等),如果这有帮助的话(我肯定会),但我主要想先提出这个问题。如果有人想看到这个层次的细节,我会把它和我的问题放在这里。非常感谢-

您并不完全符合SO格式。对于每一个特定的问题,我们只有非常有限的注意力,而且我们不阅读多页散文。这可能是因为您使用的是原语类型吗?尝试整数而不是int,等等。即使RequObj类的唯一成员是单个字符串成员变量,上述示例仍然失败。所以,我可能对WSDL做了一些错误,尽管我让IntelliJ为我创建了它。你不应该忘记Axis 1.4还生成了它特定的server-config.wsdd文件来配置所有操作。有时它不是按你想要的方式产生的。如果您使用wsdl文件和xsd模式以及.wsdd文件编辑您的问题,我想我可以提供帮助。对于每一个特定的问题,我们只有非常有限的注意力,而且我们不阅读多页散文。这可能是因为您使用的是原语类型吗?尝试整数而不是int,等等。即使RequObj类的唯一成员是单个字符串成员变量,上述示例仍然失败。所以,我可能对WSDL做了一些错误,尽管我让IntelliJ为我创建了它。你不应该忘记Axis 1.4还生成了它特定的server-config.wsdd文件来配置所有操作。有时它不是按你想要的方式产生的。如果您使用wsdl文件和xsd模式以及.wsdd文件编辑您的问题,我想我可以提供帮助。