我正在使用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中的错误吗?似乎没有合理的理由会发生这种情况。
答案 0 :(得分:3)
为了保持清洁并且没有毫无意义的开放性问题...这显然是JAX-WS RI 2.2.7中的一个错误。据我所知,没有解决方法。