我成功地在具有 Jax-WS Spring 支持的 Tomcat servlet 容器上公开了一个合同优先的 JAX-WS Web 服务。不过,我对xs:idref
类型有问题。原始 XSD 文件包含复杂类型
<xs:complexType name="DocumentScopeOptionalTypeReferenceIdentifier">
<xs:simpleContent>
<xs:extension base="DocumentScopeReferenceIdentifierContent">
...
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="DocumentScopeReferenceIdentifierContent">
<xs:restriction base="xs:IDREF">
<xs:minLength value="1"/>
<xs:maxLength value="64"/>
</xs:restriction>
</xs:simpleType>
xjc 正确编译为
public class DocumentScopeOptionalTypeReferenceIdentifier {
@XmlValue
@XmlIDREF
protected Object value;
...
}
但是,当我部署 web 服务时,@XmlIDREF
注释被忽略,我最终xs:anyType
在生成的 WSDL 的命名空间声明中得到一个
<xs:complexType name="DocumentScopeOptionalRoleReferenceIdentifier">
<xs:simpleContent>
<xs:extension base="xs:anyType">
...
</xs:extension>
</xs:simpleContent>
</xs:complexType>
有问题的 web 服务的客户端报告说,他们无法使用此anyType
存在生成客户端存根(使用 C#)。我将如何将其改回xs:idref
?谢谢。