You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AXIS 2中WSDL字符串数组类型的定义问题咨询

Axis2 WSDL中字符串数组的正确定义方式

你原来在Axis1里用的直接在元素上设置maxOccurs="unbounded"的写法,在Axis2的wsdl2java工具下会因为规范兼容性问题无法生成正确的数组类型。下面是两种适配Axis2的标准写法:

方式一:使用简单列表类型

适合不需要额外属性的纯字符串数组,直接通过<xs:list>定义:

<!-- 直接定义列表元素 -->
<xs:element name="names" type="xs:string" nillable="true"/>

<!-- 或者先定义可复用的列表类型 -->
<xs:simpleType name="StringList">
  <xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:element name="names" type="StringList" nillable="true"/>

方式二:使用嵌套复杂类型(推荐)

这种写法更符合SOAP规范,也能更好地兼容Axis2的代码生成工具,支持空值和可选出现:

<xs:complexType name="NameArray">
  <xs:sequence>
    <xs:element name="name" type="xs:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:element name="names" type="NameArray" nillable="true"/>

为什么原来的写法不行?

Axis1对WSDL的解析比较宽松,允许直接在根元素上重复;但Axis2严格遵循JAXB和WS-I基本规范,这种松散的重复元素会被解析成多个独立的name参数,而非数组对象,导致生成的服务类无法适配数组逻辑。

内容的提问来源于stack exchange,提问作者AXISDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:12:03