Metro WSDL生成和可枚举数组

时间:2013-07-21 08:45:33

标签: java web-services jax-ws java-metro-framework

我使用JAX-WS的Metro实现(v 2.2.5),我的WSDL在服务器上自动生成。

我已经定义了WS方法:

@WebMethod
public String myMethod(@XmlElement(nillable=false) String[] array, @XmlElement(nillable=false) String field);

问题是'nillable = false'对数组不起作用。自动生成的WSDL是:

<xs:element name="array" type="xs:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="field" type="xs:string"/>

我在Metro源代码中找到了以下片段(类:AbstractWrapperBeanGenerator,方法:processXmlElement):

boolean nillable = nav.isArray(type) || (elemAnn != null && elemAnn.nillable());

如果我将此片段更改为:

boolean nillable = (elemAnn != null && elemAnn.nillable());

一切都按照假设运作。

你知道为什么会这样吗?

您是否知道如何改变这种行为,但没有考虑到:

  1. 更改dafault metro源代码

  2. 使用包装类而不是数组(对于纯JAXB而言) 工作正常)

  3. 首先通过手动更正将我的实施更改为合同 WSDL

0 个答案:

没有答案