JAX WS中

时间:2017-01-10 08:32:01

标签: java jax-ws

我想问一下如何在 JAX-WS 中指定SOAP Web服务,这样如果我想要按值A或值{{}填充字段1}}。任何其他值都应该返回错误。

我想到了Java中的枚举,但仍然没有弄清楚如何实现它。

有什么建议吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用相同的枚举。

在WSDL的XSD中,您将定义如下的元素: -

 <xsd:complexType name="Value">
    <xsd:sequence>
      <xsd:element name="elementValue" type="constantType" />
    </xsd:sequence>
</xsd:complexType>


<xsd:simpleType name="constantType">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="A" />
    <xsd:enumeration value="B" />
  </xsd:restriction>
</xsd:simpleType>

在上面的例子中,你说有一个名为elementValue的元素是constantType,constantType可以是A或B的值,类型为String。

当您谈论SOAP时,基本上WSDL是您需要与服务用户共享的合同。如果某个特定字段只能有两个值,则应在合同中提及,即WSDL。

在java中,你可以使用Enum来定义如下: -

public enum ElementValue
{
  A,
  B;
}

现在您可以使用以下语法访问这些值: -

ElementValue.A
ElementValue.B

答案 1 :(得分:0)

如果在Java枚举上使用注释XmlEnum,则结果WSDL包含简单类型。可以找到一个示例in the documentation for XmlEnumValue

@XmlEnum
public enum ElementValue
{
    A,
    B;
}

产生以下WSDL部分:

 <xs:simpleType name="ElementValue">
    <xs:restriction base="xs:string">
       <xs:enumeration value="A"/>
       <xs:enumeration value="B"/>             
    </xs:restriction
 </xs:simpleType>