【问题标题】:CXF wsdl2java: Validation of XML restriction in generated stubsCXF wsdl2java:在生成的存根中验证 XML 限制
【发布时间】:2012-11-29 15:03:45
【问题描述】:

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

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

  • 使用 krasa-jaxb-tools JAXB 插件在存根上生成 JSR-303 注释,正如在 stackoverflow herehere 上已经讨论过的那样
  • 转储 XJC 和 CXF wsdl2java 并使用 XmlBeans 生成存根(这对我来说不是一个选项,因为我们的项目严重依赖 CXF)
  • 等待 CXF 在它们被序列化后验证存根,如 here 所述(但是,这意味着在调用设置器时会丢失验证)

【问题讨论】:

    标签: cxf jaxb2 wsdl2java


    【解决方案1】:

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

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

    【讨论】:

    • 您可能想考虑看看像 Google Summer of Code 这样的地方是否会支持此类活动。 (OTOH,我从未见过任何使用这些东西的真实架构,即使是用于文档验证目的。)
    • 非常感谢您的回复。我已经得到了今天工作的 mininclusive 和 maxinclude 方面的原型(我们任务的主要重点)。一旦我清理和改进了代码,我将很乐意分享代码。分享这个的最佳做法是什么?
    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 2013-10-26
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多