CXF wsdl2java:在生成的存根中验证XML限制

CXF wsdl2java:在生成的存根中验证XML限制,cxf,jaxb2,wsdl2java,Cxf,Jaxb2,Wsdl2java,问题:使用CXFs wsdl2java,是否可以在生成的Java存根中包含模式元素和类型的限制 用例: 如果我的WSDL包含以下类型: <xs:complexType name="TestResponse"> <xs:sequence> <xs:element name="code"> <xs:simpleType> <xs:restriction base="xs:int">

问题:使用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>
如果有类似的东西,那就太好了:

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中的这一点 编程论坛,它似乎是不支持开箱即用或任何可用的插件

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

  • 使用JAXB插件在存根上生成JSR-303注释,这一点在stackoverflow上已经讨论过,并且已经讨论过
  • 转储XJC和CXFs wsdl2java并使用生成存根(对我来说这不是一个选项,因为我们的项目严重依赖于CXF)
  • 等待CXF验证存根,一旦它们被序列化(如前所述)(但是,这意味着在调用setter时会丢失验证)

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


如果您想转而使用XMLBeans作为数据模型,CXF的wsdl2java确实支持XMLBeans。将“-dB XMLBeas”标志添加到命令行中,它应该生成XMLBeice的东西,而不是JAXB.< /P>。您可能想考虑一下像谷歌代码的夏天是否会支持这样的活动。(OTOH,我从来没有见过任何真实世界的模式使用这些东西,甚至用于文档验证目的。)非常感谢您的回复。我已经得到了一个mininclusive和maxinclude方面的原型,现在正在工作(我们任务的主要焦点)。一旦我对代码进行了清理和改进,我将很乐意分享代码。分享这一点的最佳实践方式是什么?
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;
}