WSDL2Java не создаст все заглушки - PullRequest
1 голос
/ 11 августа 2010

Я использую Apache axis2 и, более конкретно, инструмент wsdl2java для создания заглушек для веб-службы и создания клиента с учетом файла wsdl.

Когда я пытаюсь сгенерировать классы заглушек для paypalось веб-службы (ее файл wsdl здесь ) не будет генерировать заглушки для обеих привязок, включенных в wsdl, а только для второй (PayPalAPIAASoapBinding)

Кто-нибудь работал над этим wsdlс помощью инструмента apache wsdl2java раньше?

Ответы [ 2 ]

2 голосов
/ 25 сентября 2010

Я тоже с этим боролся.

Краткий ответ:Добавьте -pn PayPalAPI к вашей команде Axis2.

Длинный ответ:Взгляните на следующие строки WSDL PayPal:

<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 делает свое дело.

0 голосов
/ 11 августа 2010

apon,
Я использовал Eclipse, создал новый проект клиента веб-службы и указал на указанный вами URL.Я думаю, что смог создать обе заглушки.Можете ли вы попробовать создать заглушки из Eclipse IDE один раз?

...