2

我没有成功使用 Axis 1.4 1855(根据axis.jar manifest.mf 文件)将对象数组传递给Java Web 服务。我正在使用 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)

... ETC

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

我真的被困住了,没有运气在各种论坛上对此进行调查。我看过你写的很多文章,但似乎都没有解决这个特定问题……如果我不能解决这个问题,我将不得不返回调用我自己的 Java DOM 函数来将我的请求/响应转换为 XML,我知道这是非标准的……</p>

这些是包含我的请求和响应定义的类。在我附加的文件中,我进一步简化了这些文件,使它们只包含单个 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、客户端代码、服务代码、存根代码等)如果有帮助的话(我相信它会),但我主要想先提出这个问题。如果有人想看到这个级别的细节,我会在这里提出我的问题。非常感谢 -

4

0 回答 0