我正在使用 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 中的错误吗?这似乎没有合乎逻辑的理由。