Создание клиента Metro с использованием локального файла WSDL - PullRequest
6 голосов
/ 08 марта 2011

Я сгенерировал клиента Metro с помощью wsimport, но в этом случае доступ к WSDL осуществлялся через https. Мой командир выглядел так:

wsimport https://service.net/services/Service?wsdl -d C:\ClientProject\src\main\java -keep

и все работало нормально. Сейчас я пытаюсь сгенерировать клиента, однако у меня есть только локальная копия файла WSDL. Каталог моего проекта настроен так (в c: \ Devel):

ClientProject
  |- src
     |- main
        |- java
     |- resources
        |- META-INF
           |- service.wsdl
  |- wsimport.bat

Файл wsimport.bat выглядит следующим образом:

wsimport -keep -d ../src/main/java -wsdlLocation ../src/resources/META-INF/service.wsdl

, основанный на примере Metro Guide, но без опции -p (http://metro.java.net/guide/Developing_client_application_with_locally_packaged_WSDL.html). Однако, когда я запускаю файл bat, я получаю бесконечный цикл вывода команды на консоль. Например:

C:\Devel\ClientProject>wsimport -keep -d ../src/main/java -wsdlLocation ../src/resources/META-INF/service.wsdl

Может кто-нибудь указать, что я делаю не так?

UPDATE

Я попытался использовать абсолютные пути (и изменить порядок параметров безрезультатно. Я все еще получаю бесконечные распечатки командной консоли:

wsimport C:\Devel\ClientProject\src\resources\META-INF\service.wsdl -d C:\Devel\ClientProject\src\main\java -keep

1 Ответ

7 голосов
/ 09 марта 2011

http://www.java.net/forum/topic/glassfish/metro-and-jaxb/problems-generating-client-using-local-wsdl-file#comment-812705

Если для запуска команды wsimport используется файл .bat, не называйте его wsimport, иначе вы вызовете этот файл в бесконечном рекурсивном цикле.

Кроме того, "-wsdllocation" чувствителен к регистру. «-wsdlLocation» не будет работать (хотя я видел много примеров этого во время моих поисков).

Эта команда wsimport генерирует код клиента из локального WSDL и задает атрибут «wsdlLocation» в аннотации класса обслуживания @WebServiceClient:

wsimport src/resources/META-INF/service.wsdl -keep -d src/main/java -wsdllocation META-INF/service.wsdl
...