java - wsimport 使用额外的下划线错误地生成枚举类型

标签 java jax-ws wsimport

我正在使用 wsimport 从 WSDL 文件(也已生成)生成我的 JAX-WS 客户端,但在客户端生成与服务器端不匹配的枚举时遇到问题。

我的 WSDL 文件中的适用片段显示了正确的条目:

<xs:simpleType name="type">
  <xs:restriction base="xs:string">
    <xs:enumeration value="BLAH_99X"/>
    <xs:enumeration value="BLAH_123"/>
    <xs:enumeration value="BLAH_ABC"/>
  </xs:restriction>
</xs:simpleType>

为客户端生成的枚举的适用部分是:

@XmlType(name = "type")
@XmlEnum
public enum Type {
    @XmlEnumValue("BLAH_99X")
    BLAH_99_X("BLAH_99X"),
    BLAH_123("BLAH_123"),
    BLAH_ABC("BLAH_ABC");
}

我原以为为客户端生成的枚举项会与服务器端(和 WSDL 中)的枚举项相匹配。但是,当您查看时,除了第一个生成为 BLAH_99_X 然后映射到正确值的项目之外,它都正确生成了它们。

是否有任何真正的理由必须以这种方式生成该项目?有没有其他人遇到过这个以及如何让它正确生成?

更新

我凭直觉向我的枚举添加了一个疯狂的值 (T1A32BCS12),它生成了 T_1_A_32_BCS_12("T1A32BCS12") 作为我在客户端代码中的枚举项.所以,似乎只要你有一个字母和一个数字并排,wsimport 就会在它们之间插入一个下划线。这是 wsimport 中的错误吗?似乎没有合乎逻辑的理由会发生这种情况。

最佳答案

为了保持事情的整洁并且没有毫无意义的开放性问题...这显然是 JAX-WS RI 2.2.7 中的一个错误。据我所知,没有解决方法。

关于java - wsimport 使用额外的下划线错误地生成枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12731751/

相关文章:

java.lang.ClassCastException : com. sun.xml.bind.v2.runtime.JAXBContextImpl 无法转换为 com.sun.xml.bind.api.JAXBRIContext

node.js - Node-soap 找不到调度方法

java - JAXBElement.getValue() 返回 null

java - 在 Java 中发送对象列表作为响应

java - HTTP 响应代码 : expected time between informational code (1xx) and non-informational code

java - 将 PHP SoapClient 与 Java JAX-WS RI(Web 服务)结合使用

java - 用 JDK 11 替换 wsimport

java - 如何包含打包的 WSDL 以与使用 wsimport 生成的 Java 类一起使用?

java - tomcat连接器更改端口

java - AWS JAVA SDK错误 "The bucket is in this region: us-east-1. Please use this region to"