【问题标题】:WSDL2Java won't create all the stubsWSDL2Java 不会创建所有存根
【发布时间】:2011-03-28 07:48:55
【问题描述】:

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

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

以前有人用 apache 的 wsdl2java 工具处理过这个 wsdl 吗?

【问题讨论】:

标签: java apache wsdl axis2 wsdl2java


【解决方案1】:

我也一直在为此苦苦挣扎。

简答:
-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 PayPal API 就可以了。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Eclipse 确实为这两个绑定创建了存根,但只是在选择 Apache 轴(而不是 Apache 轴 2)作为 Web 服务运行时。但是对于我的程序,必须动态创建存根,这就是为什么我不能使用 eclipse...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2014-12-30
    • 2013-05-22
    相关资源
    最近更新 更多