【问题标题】:no java artifacts are generated via jax ws没有通过 jax ws 生成 java 工件
【发布时间】:2012-08-09 00:38:27
【问题描述】:

我正在使用 JAX-WS 2.1 从 xsd 文件为 Web 服务生成工件。

这里是有问题的工件的 XSD 定义:

<xs:simpleType name='Example'>
    <xs:annotation>
      <xs:documentation>Example</xs:documentation>
    </xs:annotation>
    <xs:restriction base='xs:string'>
      <xs:minLength value='0'/>
      <xs:maxLength value='1'/>
    </xs:restriction>
</xs:simpleType>

Jax WS 不生成工件示例。我没有看到名为 Example 的类。

但是当我将枚举添加到 XSD 定义中时,JAX-WS 会成功生成它:

<xs:simpleType name='Example'>
    <xs:annotation>
      <xs:documentation>Example</xs:documentation>
    </xs:annotation>
    <xs:restriction base='xs:string'>
      <xs:minLength value='0'/>
      <xs:maxLength value='1'/>
      <xs:enumeration value='A'/>
    </xs:restriction>
</xs:simpleType>

如果有人知道是什么问题请帮忙

【问题讨论】:

    标签: java xsd jax-ws


    【解决方案1】:

    要为您的场景获取一个类,您需要一个自定义绑定。 This post on SO 向您展示了自定义绑定文件的结构。

    您需要记住的一件事是,默认情况下 JAXB 将为复杂类型生成一个类,而不是为简单类型生成一个类。

    【讨论】:

      【解决方案2】:

      xs:minLengthxs:maxLength 不能与xs:enumeration 一起使用。 Enumeratio 是固定值的集合,xs:minLengthxs:maxLength 用于在应用程序中输入的值。所以只使用枚举

        <xsd:restriction base="xsd:string">
           <xsd:enumeration value="A"/>
           <xsd:enumeration value="B"/>
           <xsd:enumeration value="C"/>
        </xsd:restriction>
      

      【讨论】:

      • 感谢您的回答。但是为什么当我只使用 xs:minLength, xs:maxLength 时,JAX WS 不会生成工件?最初,XSD 仅带有 。我添加了枚举来检查 Jax Ws 是否会生成工件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多