2013-09-23 2 views
5

Я использую параметр -clientjar wsimport для экспорта моего WebService в банку.wsimport -clientjar генерирует классы в (пакет по умолчанию)

>wsimport -d C:\webservice -keep -clientjar webservice.jar http://localhost:8080/WebService?wsdl 

папка с исходным кодом (.java файлы) и webservice.jar созданы.

баночка выглядит следующим образом:

com 
    | 
    company 
     | 
     webservice 
       | 
       a bunch of .class files 

META-INF 
     | 
     wsdl 
      | 
      wsdl file 

Однако, когда я положил его на/Lib папку WEB-INF в моем проекте, классы находятся в (пакет по умолчанию) и названы как

com\company\webservice\file.class 

Не понимаю, почему. Я также использовал параметр -p для указания имени пакета, но он не работает.

Любые подсказки?

+0

такой же здесь. любые подсказки? – inquisitive

+0

, когда я использую опцию '-clientjar', jar, сгенерированный в результате, содержит ** только ** папку META-INF. – peterh

ответ

0

У меня была та же проблема. Наконец, решил не использовать параметр -clientjar и сгенерировал банку вручную с помощью jar.exe и работает.

0

Я использовал -clientjar, чтобы он выполнял всю работу для меня, но использовал мой любимый файловый архиватор для unzjar и jar его снова.

2

Я думаю, проблема в том, что опция -clientjar предназначена для совершенно иной цели, чем ожидает OP.

Назначение опции -clientjar заключается в том, чтобы вставить копию WSDL внутри сгенерированных артефактов, чтобы она могла стать частью файла jar приложения. Преимущество наличия связанного WSDL (и, фактически, его использования, конечно) состоит в том, что потребителю веб-службы не нужно делать вызов конечной точке для загрузки WSDL каждый раз, когда он инициирует себя.

Ссылки:

https://weblogs.java.net/blog/ramapulavarthi/archive/2010/09/03/wsimport-clientjar-option-ease-client-side-web-service-progra

Using jaxws-maven-plugin with -clientjar option

1

1.) Разархивируйте/unjar clientjar

2.) банку файл, используя

jar cvf <jarName>.jar <root_folders> 

пример:

jar cvf weather.jar com META_INF 
2

Существует два варианта достижения этого, оба работают как шарм. И оба варианта могут быть автоматизированы из ant \ gradle, которые вы назовите его.

1.To использовать -clientjar, а затем упакуйте источники

2.Manually вставьте в банку WSDL и настроить wsdLlocation URL

Если у вас есть C: \ WSDL \ SO \ Стаса. WSDL (я бегала на окнах)

CD C:\WSDL\SO\ 

Первый вариант

C:\WSDL\SO>wsimport -clientjar StasWebServiceClient.jar stas.wsdl 

Это создает StasWebServiceClient.jar банку файл, но при импорте его затмить, источники не ввозу из-за проблема с темой (пакет по умолчанию).

=> Распакуйте файл фляги в текущей папке, вы можете использовать 7zip или любой другой большой почтовый инструмент, или вы можете запустить

C:\WSDL\SO>jar xf StasWebServiceClient.jar 

разархивировать банку.

иерархия папок должна выглядеть

C:\WSDL\SO\META-INF 

C:\WSDL\SO\stas.wsdl(original wsdl) 

C:\WSDL\SO\StasWebServiceClient.jar(generated jar file) 

C:\WSDL\SO\META-INF\wsdl(created by -clientjar) 

C:\WSDL\SO\META-INF\wsdl\stas.wsdl(copied by -clientjar) 

C:\WSDL\SO\com\... 

/* all generated classes\sources */ 

C:\WSDL\SO\com\... 

=> У

C:\WSDL\SO>jar -cvf StasWebServiceClientCorrect.jar com META-INF 

это создаст еще одну баночку, StasWebServiceClientCorrect.jar, который теперь имеет правильную упаковку.

Второй вариант

=> Run wsimport

C:\WSDL\SO>wsimport -keep stas.wsdl 

генерировать код .Я всегда хотел иметь -keep вариант, но это до вас.

=> создать META-INF папку

C:\WSDL\SO>mkdir META-INF 

=> Создание META-INF/WSDL папку

C:\WSDL\SO>cd META-INF 




C:\WSDL\SO\META-INF>mkdir wsdl 

=> идти в одну папку вверх.

C:\WSDL\SO\META-INF>cd .. 

=> Скопировать stas.wsdl файл в META-INF \ \ stas.wsdl WSDL

C:\WSDL\SO>copy stas.wsdl META-INF\wsdl\stas.wsdl 

=> Создать архив баночку

C:\WSDL\SO>jar -cvf StasWebServiceClient.jar com META-INF 

Импорт баночка в рабочую область. Когда вы создадите фактический вызов услуги, используйте:

StasService stasService = new StasService(StasService.class.getClassLoader().getResource("META-INF/wsdl/stas.wsdl")) 
Смежные вопросы