1

问题:使用 CXFs 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 编程论坛上的这篇文章,似乎不支持开箱即用或任何可用的插件。

我知道以下可能的替代方法(但尚未完全测试它们):

4

1 回答 1

2

我还没有看到可以做到这一点的 XJC 插件。如果您想为一些基本的验证步骤编写一个,我们当然会感谢您的贡献。

如果您想转而使用 XMLBeans 作为数据模型,CXF 的 wsdl2java 确实支持 XMLBeans。将“-db xmlbeans”标志添加到命令行,它应该生成 XMLBeans 内容而不是 JAXB。

于 2012-11-29T18:50:16.773 回答