有没有办法让 JAX-WS 生成的默认 WSDL(通过返回?wsdl
)使用 XMLchoice
而不是any
and sequence
?
问问题
1373 次
1 回答
2
<types/>
我假设您指的是 WSDL 部分中的 XML 模式。此模式的生成不受 JAX-WS 管理,而是由 JAXB 规范管理。这是 JAX-WS 中数据绑定的规范。
@XMLElements
但要真正回答您的问题:是的,您可以在表示您的数据类型的类中使用适当的注释来做到这一点。例如,采用这样的 Web 服务接口:
@WebService
public interface Chooser {
String chooseOne(Choice myChoice);
}
那么你的 XSD 的内容取决于Choice
类的结构。您可以通过以下方式强制生成choice
元素:
public class Choice {
@XmlElements(value = { @XmlElement(type = First.class),
@XmlElement(type = Second.class) })
private Object myChoice;
}
类First
和Second
是选择中的可能元素。从此代码生成的架构如下所示:
<xs:complexType name="choice">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="myChoice" type="tns:first"></xs:element>
<xs:element name="myChoice" type="tns:second"></xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
choice
这仍然将a包装起来sequence
,但由于 中只有一个元素sequence
,这并不重要。
于 2013-02-01T12:29:58.180 回答