问题:使用CXF wsdl2java,是否可以在生成的Java存根中包含架构元素和类型的限制?
使用案例 如果我的WSDL包含以下类型:
<xs:complexType name="TestResponse">
<xs:sequence>
<xs:element name="code">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:maxInclusive value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="text">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
wsdljava默认情况下使用setter生成存根,例如:
public void setCode(Integer value) {
this.code = value;
}
public void setText(String value) {
this.text = value;
}
哪里有类似的东西会很棒:
public void setCode(Integer value) {
if (value > 5) throw new ValidationException();
this.code = value;
}
public void setText(String value) {
if (value.length() > 5) throw new ValidationException();
this.text = value;
}
XJC和CXFs wsdljava目前不存在此类工具/ JAXB插件是否正确?
到目前为止我发现了什么:
至少在2010年,根据Oracle Java中的post 编程论坛,它似乎不支持开箱即用或任何可用的插件。
我知道以下可能的替代方法(但尚未完全测试):
答案 0 :(得分:2)
我还没有看到过这样做的XJC插件。如果你想为一些基本的验证步骤编写一个,我们肯定会感谢你的贡献。
如果您想转而使用XMLBeans作为数据模型,CXF的wsdl2java确实支持XMLBeans。将“-db xmlbeans”标志添加到命令行,它应该生成XMLBeans而不是JAXB。