有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java WSDL2Java不会创建所有存根

我正在使用ApacheAxis2,更具体地说,是wsdl2java工具来生成web服务的存根,并在给定wsdl文件的情况下创建客户机

当我尝试为paypal web服务(其wsdl文件为here)生成存根类时,axis不会为包含在wsdl中的两个绑定生成存根,而只为第二个绑定(PayPalapiaAsoAppBinding)生成存根

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


共 (2) 个答案

  1. # 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指定了一个带有两个端口的服务。我们的问题是Axis2只为第二个端口“PayPalapia”创建存根,而不是为端口“PayPalAPI”创建存根

    现在,看一看Axis 2命令行选项引用(http://ws.apache.org/axis2/tools/1_2/CodegenToolReference.html#cmdref),具体地说,是对选项的描述-pn

    "Specifies the port name to be code generated. If the port name is not specified, then the first port (of the selected service) will be picked."

    因此,指定-pn PayPalAPI就可以做到这一点

  2. # 2 楼答案

    apon,
    我使用Eclipse创建了一个新的Web服务客户端项目,并指向了您提到的URL。我想我能够创建两个存根。你能尝试一下从EclipseIDE创建存根吗