2014-04-06 40 views
6

我一直在嘗試編寫一個Web服務(JAX-WS),並且我經歷了一系列從2006年到2013年的教程那些。他們中的大多數都是關於某個IDE的。那些談論手動創建/部署Web服務的人使用ant腳本。直到這裏一切都很好。apt vs wsgen vs wsimport。關於什麼時候使用什麼以及爲什麼不使用其他

當我檢查螞蟻腳本時,混淆開始。一些舊的教程使用APT任務來編譯SEI,然後wsgen用於生成工件。較新的只使用wsgen(儘管APT在ant腳本中被定義爲taskdef)。另外,正如我一直在閱讀有關JAVA 7文檔的內容,它說您不需要使用wsgen,因爲javac本身會執行所有編譯和工件請求。 WS是動態運行時生成的。

我試圖在SEI上使用javac命令並將它部署在tomcat上,但它沒有奏效。

任何人都可以請澄清,我需要在JAVA SE 7版本中使用哪些命令來部署Web服務。

此外,我想知道每個命令生成什麼以及何時使用哪些命令。

根據我的知識,wsimport不需要開發和部署,但只需要構建WS-client。它是否正確?如果不是,請給我提供指示以清除我的理解。

由於提前

另外,如果我再重複我自己難過,因爲我是新來的StackOverflow,而不是非常熟悉。 :)

回答

9

要使用Java-WS規範創建Web服務,您需要幾個工件。 「apt」,「wsgen」和「wsimport」的目的是自動執行此過程。

創建Web服務有兩種方法:自下而上(先編碼,然後WSDL)和自上而下(先WSDL然後編碼)。

自下而上的方法:

  • 易於:採用源代碼,生成WSDL(和工件)
  • WSGEN:採用編譯代碼,生成WSDL(和工件)

自上而下

  • wsimport:使用WSDL,爲服務/客戶端實現生成java代碼。

使用apt的優點是具有源代碼腳本將能夠獲取參數名稱並在WSDL上使用它們。

Web服務部署

對於生產,你需要它可以是負責安全,scalablity和資源管理的Web容器,但是,出於測試目的,你可以使用部署Web服務內置Java SE上的Web服務器:

@WebService public class MyService{ 

    public static void main(String args[]){ 
     MyService service = new MyService(); 
     String url = "service/"; 
     Endpoint ep = new Endpoint(url, service); 
    } 


    @WebMethod 
    public String getInfo(){ 
     return "Service info"; 
    } 
} 

這段代碼會生成WSDL並在localhost/service上發佈服務。

+0

謝謝......這給了我一個編寫符合JAX-WS規範的Web服務的基本思路。 現在w.r.t apt和wsgen,我需要使用任何明確/ ?? bcz我能夠部署Myservice類沒有任何這些,它確實工作正常... –

+0

不,你不知道。 「這段代碼將生成WSDL並在本地主機/服務上發佈服務」。 Endpoint類將爲您執行wsgen。 如果你覺得這個答案有幫助,請選擇「這個答案是有用的」,甚至更好,「接受」答案。 – FewDexter

相關問題