Java Metro WSDL生成和零阵列

Java Metro WSDL生成和零阵列,java,web-services,jax-ws,java-metro-framework,Java,Web Services,Jax Ws,Java Metro Framework,我使用JAX-WS(v2.2.5)的Metro实现,我的WSDL在服务器上自动生成 boolean nillable = (elemAnn != null && elemAnn.nillable()); 我已经定义了WS-method: @WebMethod public String myMethod(@XmlElement(nillable=false) String[] array, @XmlElement(nillable=false) String field);

我使用JAX-WS(v2.2.5)的Metro实现,我的WSDL在服务器上自动生成

boolean nillable = (elemAnn != null && elemAnn.nillable());
我已经定义了WS-method:

@WebMethod
public String myMethod(@XmlElement(nillable=false) String[] array, @XmlElement(nillable=false) String field);
boolean nillable = (elemAnn != null && elemAnn.nillable());
问题是'nillable=false'不适用于数组。自动生成的WSDL是:

<xs:element name="array" type="xs:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="field" type="xs:string"/>
boolean nillable = (elemAnn != null && elemAnn.nillable());
如果我将此片段更改为:

boolean nillable = (elemAnn != null && elemAnn.nillable());
一切正常

boolean nillable = (elemAnn != null && elemAnn.nillable());
你知道为什么它是这样做的吗

boolean nillable = (elemAnn != null && elemAnn.nillable());
您是否知道如何改变这种行为,但不考虑:

boolean nillable = (elemAnn != null && elemAnn.nillable());
  • 更改dafault metro源代码

  • boolean nillable = (elemAnn != null && elemAnn.nillable());
    
  • 使用包装类而不是数组(对于纯JAXB (工作正常)

  • boolean nillable = (elemAnn != null && elemAnn.nillable());
    
  • 将我的实现更改为合同优先,手动更正 WSDL

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