2013-09-23 42 views
5

我正在使用-clientjar wsimport參數將我的WebService導出到jar中。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 

然而,當我把它放在WEB-INF/lib文件夾在我的項目中,類在(默認包)和被命名爲喜歡

com\company\webservice\file.class 

我不明白爲什麼。我也使用-p參數來指定一個包名稱,但它不起作用。

任何線索?

+0

相同。任何線索? – inquisitive

+0

當我使用'-clientjar'選項時,生成的jar文件僅包含** META-INF文件夾。 – peterh

回答

0

我有同樣的問題。最後決定不使用-clientjar選項並使用jar.exe手動生成jar並運行。

0

我用-clientjar所以它會爲我做所有的工作,但用我最喜歡的文件存檔器unzjar和jar再次。

2

我認爲這裏的問題是,-clientjar選項意味着完全不同於OP期望的目的。

-clientjar選項的用途是將WSDL的副本嵌入到生成的構件中,以便它可以成爲應用程序的jar文件的一部分。擁有一個捆綁的WSDL(當然實際使用它)的好處是,Web服務使用者不必在每次啓動時都調用端點來下載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)解壓縮/不能解壓縮clientjar使用

jar cvf <jarName>.jar <root_folders> 

例如

2.)jar文件:

jar cvf weather.jar com META_INF 
2

實現此目的有兩種方式,兩種方式都像魅力一樣。 這兩個選項都可以通過ant \ gradle自動命名。

1.To使用-clientjar,然後重新包裝源

2.Manually插入到WSDL罐子和自定義URL wsdLlocation

假設你有C:\ WSDL \ SO \的STA。WSDL (我是在Windows上運行)

CD C:\WSDL\SO\ 

第一選項

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

這將創建StasWebServiceClient.jar jar文件,但在導入到eclipse時,該消息人士還不能對的,因爲主題問題(默認包)。

=>解壓縮的jar文件到當前文件夾,你可以使用7zip的,或任何其他偉大的zip工具,也可以運行

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,現在有正確的包裝。

第二個選項

=>運行的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 \ WSDL \ stas.wsdl

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

=>創建JAR歸檔

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

導入罐子工作區。 當您將創建實際的服務呼叫時,請使用:

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