我在 xsd 文件中有类定义。我使用 JAXB 绑定生成了类。对于我没有设置器的列表。
之后,我在我的 Web 服务中使用了这些类。我为服务创建了 wsdl + xsd。但是......在 xsd 中我没有一些字段定义(对于列表,因为我没有这些的设置器)。
如何为我的课程正确生成 wsdl + xsd?
Netbeans 7.3.1 + Glassfish
示例代码: 基本 XSD:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="B">
<xs:complexType>
<xs:sequence>
<xs:element name="FIELD1" type="xs:dateTime">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
我做 JAX 绑定,所以它生成了类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"b"
})
@XmlRootElement(name = "A")
public class A {
@XmlElement(name = "B", required = true)
protected List<A.B> b;
public List<A.B> getB() {
if (b == null) {
b = new ArrayList<A.B>();
}
return this.b;
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"field1"
})
public static class B {
@XmlElement(name = "FIELD1", required = true)
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar field1;
public XMLGregorianCalendar getFIELD1() {
return field1;
}
public void setFIELD1(XMLGregorianCalendar value) {
this.field1 = value;
}
}
}
如您所见,b 字段没有设置器...
我在网络服务中使用它:
@WebMethod(operationName = "hello")
public String hello(@WebParam(name = "name") A txt) {
return "Hello " + txt + " !";
}
所以最后,我有 wsdl + xsd,有 A 类,但没有字段:
<xs:complexType name="a"><xs:sequence/>
</xs:complexType>