加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

Web服务 – ADBException:意外的子元素

发布时间:2020-12-14 18:58:22 所属栏目:资源 来源:网络整理
导读:我创建了一个Web服务: Apache Axis 2 CodeGen向导v.1.6.2(绑定:ADB) Eclipse Juno Tomcat 7 Java 6 该服务将自定义Java对象(DataBean)返回给客户端,但是我在客户端代码中偶然发现一个异常: org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADB
我创建了一个Web服务:

> Apache Axis 2 CodeGen向导v.1.6.2(绑定:ADB)
> Eclipse Juno
> Tomcat 7
> Java 6

该服务将自定义Java对象(DataBean)返回给客户端,但是我在客户端代码中偶然发现一个异常:

org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement {schemaTargetNs}message

从我所研究的,再过一遍,我认为这是一个很常见的问题,但还没有一个确切的答案,应该做些什么来纠正.

这个和其他论坛上的一些帖子声明需要修改WSDL(某些名称空间),或客户端存根需要修改.有些甚至说ADB有一个bug.这在Axis的早期版本当然是一个错误,但在邮件档案馆中有很多帖子说明该错误已修复.这些邮件归档与Axis2的早期版本相关.

现在我的问题是:

>它还是一个bug吗?
>在WSDL或Client存根中需要进行什么改变?

值得一提的是,我创建了一个类似的Web服务,它将一个“String”返回给客户端.它工作正常!因此,当涉及到复杂的数据类型时,会失败.

有关于Apache’s website的一些信息,在“已知限制”标题下…

它说:“ADB是一个”简单“的数据绑定框架,并不意味着编译所有类型的模式.以下限制是最突出的.

>复杂类型扩展和限制“.

那是问题吗?

以下是WSDL文件中可能对您有兴趣的片段

<wsdl:types>
        <xs:schema xmlns:ax26="http://mywebservice/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="schemaTargetNs">
            <xs:import namespace="http://mywebservice/xsd"/>
            <xs:element name="getMsg">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="reqData" nillable="true" type="ax25:DataBean"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="getMsgResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="return" nillable="true" type="ax25:DataBean"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:schema>
        <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://mywebservice/xsd">
            <xs:complexType name="DataBean">
                <xs:sequence>
                    <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
                    <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>
        </xs:schema>
    </wsdl:types>

现在我如何解决这个问题?我应该在此附加一些其他代码片段吗?

解决方法

“意外的子元素”表示接收者收到的消息包含接收者不期待的XML元素. “{schemaTargetNs} message”是遇到的意外元素的名称.换句话说,发送方向接收方发送了无效消息.

>发件人可能已经包含了一个它不应该的元素.
>发件人可能已经省略了一个强制性元素.
>发件人可能将元素放在错误的顺序.
>发件人可能发送了完全不正确的消息.

如果服务器发出您报告的异常,则客户端向服务器发送无效消息.如果客户端发出异常,那么错误是从服务器到客户端的响应.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读