WSDL2Java不会创建所有存根

时间:2010-08-11 11:15:35

标签: java apache wsdl axis2 wsdl2java

我正在使用Apache axis2,更具体地说,是wsdl2java工具,在给定wsdl文件的情况下,为Web服务生成存根并创建客户端。

当我尝试为paypal Web服务生成存根类(其wsdl文件为here)时,轴不会为包含在wsdl中的绑定生成存根,而只为第二个绑定生成存根(PayPalAPIAASoapBinding)< / p>

之前有没有人使用apache的wsdl2java工具处理这个wsdl?

2 个答案:

答案 0 :(得分:2)

我也一直在努力解决这个问题。

简短回答:
-pn PayPalAPI 附加到Axis2命令。

答案很长:
看一下PayPal WSDL的以下几行:

<wsdl:service name="PayPalAPIInterfaceService">
    <wsdl:port name="PayPalAPI" binding="ns:PayPalAPISoapBinding">
        <wsdlsoap:address location="https://api.sandbox.paypal.com/2.0/"/>
    </wsdl:port>
    <wsdl:port name="PayPalAPIAA" binding="ns:PayPalAPIAASoapBinding">
        <wsdlsoap:address location="https://api-aa.sandbox.paypal.com/2.0/"/>
    </wsdl:port>
</wsdl:service>

显然,WSDL指定了1个具有2个端口的服务。我们的问题是Axis2只为第二个端口“PayPalAPIAA”创建存根,但不为端口“PayPalAPI”创建存根。

现在,看一下Axis 2命令行选项参考(http://ws.apache.org/axis2/tools/1_2/CodegenToolReference.html#cmdref),具体来说,请参阅 -pn 选项的说明:

  

“指定要生成代码的端口名称。如果未指定端口名称,则将选择第一个端口(所选服务的端口)。”

因此,指定 -pn PayPalAPI 可以解决问题。

答案 1 :(得分:0)

APON,
我使用Eclipse并创建了一个新的Web Service Client项目,并指向您提到的URL。我想我能够创建两个存根。你能尝试一次从Eclipse IDE创建存根吗?