我正在开发使用现有 SOAP Web 服务的第二个客户端应用程序。我使用最新的 Apache CXF 2.3 工具从现有的 WSDL 生成 Java
wsdl2java -client -ant http://172.20.0.22/someletters/TradingServer.asmx?WSDL
并得到
WSDLToJava 错误:java.lang.IllegalArgumentException:此服务中已存在名称为 [{urn:someschema:TradingServer}GetTradeSummary] 的操作
这有逻辑,因为在查看 WSDL 文件时,您可以看到 2 个类似的操作 GetTradeSummary,但使用不同的 soapAction。
<wsdl:operation name="GetTradeSummary">
<soap:operation soapAction="urn:someschema/GetTradeSummary" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTradeSummary">
<soap:operation soapAction="urn:someschema/GetTradeSummary_Open" style="document" />
<wsdl:input name="GetTradeSummary_Open">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="GetTradeSummary_Open">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
a) 按照某种标准,它真的被认为是错误的吗?哪一个?
b)有没有办法绕过这个并为其余部分生成Java脚手架?在CXF WSDL to Java tool web page中没有提到任何内容,除了 -autoNameResolution 没有帮助。