wsimport: [ERROR] 不支持使用 SOAP 编码

问题定位

使用wsimport时出现错误,由于 SOAP 扩展元素包含 use="encoded"

问题原因

相应问题在StackOverFlow上有解答:

RPC/encoded is a vestige from before SOAP objects were defined with XML Schema. It's not widely supported anymore. You will need to generate the stubs using Apache Axis 1.0, which is from the same era.

由于encoded已在SOAP协议中废弃,为能解析这种比较老的规则,解铃还需系铃人,从解析的WSDL中发现该WSDL是由Axis 1.4生成的。

问题解决

非常简单:不使用wsimport,使用Axis 1.4的类库,生成对应代码桩。

从Maven库中找到下载文件如下类库:

activation-1.1.jar;axis-1.4.jar;commons-discovery-0.2.jar;commons-logging-1.1.1.jar;jaxrpc-1.1.jar;mail-1.4.jar;saaj-1.1.jar;wsdl4j-1.4.jar

执行:

java -cp activation-1.1.jar;axis-1.4.jar;commons-discovery-0.2.jar;commons-logging-1.1.1.jar;jaxrpc-1.1.jar;mail-1.4.jar;saaj-1.1.jar;wsdl4j-1.4.jar org.apache.axis.wsdl.WSDL2Java *.wsdl

搞定。

发表评论

电子邮件地址不会被公开。 必填项已用*标注