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

时间:2012-07-12 19:27:09

标签: java arrays web-services axis

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

几周前,我成功创建了一个非常小的Web服务,它接受一个简单的请求对象(RequObj,它聚合了一些字符串,整数和双精度)并返回一个简单的响应对象(RespObj,也包含字符串,整数和双打)。这工作正常。

但是当我尝试进行更改以将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简化为单个String成员变量(m_reqString1和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,客户端代码,服务代码,存根代码等),如果这会有所帮助(我确定会这样),但我最想提出问题。如果有人想看到这种程度的细节,我会在这里提出我的问题。非常感谢 -

0 个答案:

没有答案