【发布时间】:2012-04-13 14:22:24
【问题描述】:
我成功地在一个带有 Jax-WS Spring support 的 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 注释被忽略,我最终在生成的 WSDL 的命名空间声明中得到一个 xs:anyType
<xs:complexType name="DocumentScopeOptionalRoleReferenceIdentifier">
<xs:simpleContent>
<xs:extension base="xs:anyType">
...
</xs:extension>
</xs:simpleContent>
</xs:complexType>
有问题的 Web 服务的客户端报告说,他们无法生成存在此 anyType 的客户端存根(使用 C#)。我如何将其改回xs:idref?谢谢。
【问题讨论】:
标签: web-services jaxb jax-ws spring-ws jax-ws-customization