2013-09-23 30 views
5

Używam parametru wsimport -clientjar do eksportu mojej usługi WebService do słoika.wsimport -clientjar generuje klasy w (pakiet domyślny)

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

Tworzony jest folder zawierający kod źródłowy (pliki .java) i plik webservice.jar.

Słoik wygląda następująco:

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

META-INF 
     | 
     wsdl 
      | 
      wsdl file 

Jednak kiedy kładę go na/folderu lib WEB-INF w moim projekcie, zajęcia są w (domyślnie pakietu) i nazywane są jak

com\company\webservice\file.class 

Nie mogę zrozumieć, dlaczego. Użyłem również parametru -p do określenia nazwy pakietu, ale nie działa.

Jakieś wskazówki?

+0

to samo tutaj. jakieś wskazówki? – inquisitive

+0

kiedy używam opcji '-clientjar', wygenerowanej w wyniku słoika ** zawiera ** tylko folder META-INF. – peterh

Odpowiedz

0

Miałem ten sam problem. W końcu zdecydował się nie używać opcji -clientjar i wygenerował słoik ręcznie za pomocą pliku jar.exe i działa.

0

Użyłem -clientjar, więc zrobi on dla mnie całą pracę, ale użył mojego ulubionego archiwizatora plików, aby go rozpakować i ponownie je zsynchronizować.

2

Myślę, że problem polega na tym, że opcja -clientjar jest przeznaczona do zupełnie innego celu niż Oczekuje.

Celem opcji -clientjar jest osadzenie kopii pliku WSDL wewnątrz wygenerowanych artefaktów, aby mogła stać się częścią pliku jar aplikacji. Zaletą posiadania pakietu WSDL (i korzystania z niego oczywiście) jest to, że konsument usługi internetowej nie musi wykonywać wywołania do punktu końcowego, aby pobrać plik WSDL przy każdym uruchomieniu.

Odnośniki:

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.) Rozpakowanie/unjar clientjar

2.) JAR pomocą

jar cvf <jarName>.jar <root_folders> 

przykład:

jar cvf weather.jar com META_INF 
2

Istnieją dwie możliwości osiągnięcia tego, zarówno działa jak urok. Obie opcje można zautomatyzować z poziomu ant \ gradle, który nadałeś.

1.To używać -clientjar a następnie zapakować źródeł

2.Manually wstawić WSDL do słoika i dostosować URL wsdLlocation

Zakładając, że C: \ \ so \ WSDL Stasia.WSDL (biegałam na oknach)

CD C:\WSDL\SO\ 

Pierwsza opcja

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

Stwarza StasWebServiceClient.jar pliku jar, ale podczas importowania go do eclipse, źródła nie są importable, z powodu problem z tematem (pakiet domyślny).

=> Rozpakuj plik jar do bieżącego folderu, można użyć 7zip lub jakąkolwiek inną doskonałe narzędzie zip, czy można uruchomić

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

rozpakować słoika.

hierarchii folderów powinna wyglądać

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\... 

=> Czy

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

stworzy kolejny słoik, StasWebServiceClientCorrect.jar, który ma teraz prawidłową opakowania.

Druga opcja

=> Uruchom wsimport

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

do generowania kodu .I zawsze lubią mieć tam opcję -Trzymaj, ale to zależy od ciebie.

=> utworzyć folderu META-INF

C:\WSDL\SO>mkdir META-INF 

=> Utwórz folder META-INF/wsdl

C:\WSDL\SO>cd META-INF 




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

=> iść jeden folder w górę.

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

=> Kopiuj stas.wsdl plik w META-INF \ WSDL \ stas.wsdl

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

=> Tworzenie archiwum jar

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

Importuj słoik do pracy. Kiedy będziesz tworzyć faktyczne połączenie z usługą, użyj:

StasService stasService = new StasService(StasService.class.getClassLoader().getResource("META-INF/wsdl/stas.wsdl"))