簡體   English   中英

有哪些方法可以從WSDL文件自動生成Java客戶端存根?

[英]What methods exist to auto-generate java client stubs from WSDL files?

我是Web服務的新手,已閱讀有關XML,SOAP和WSDL的一些信息。 這很有趣! 我正在開發一個擁有Web服務和客戶端的現有項目。 然而,客戶端“高層”對客戶端應用程序不滿意。 它太復雜了,他們想要一個更容易擴展的用戶友好和更簡單的應用程序。

該項目使用Apache Axis2。 我找到了WSDL文件,並希望基於此構建一個客戶端。 但是出於上述原因(他們的意見)我不想使用Axis2。 我想知道如果我必須使用已經存在的代碼(wsdl文件),我可以做一個更簡單的客戶端有沒有人知道我可以用來根據現有的WSDL文件自動生成客戶端存根的任何其他方法? 我聽說過wsimport,即使wsdl文件是使用Axis2創建的,這仍然可以工作嗎?

非常感謝任何幫助或提示。

好吧,我們使用的是xfire,但不是以wsdl為中心的方法:wsdl是從暴露的遠程接口動態創建的。 客戶端具有相同的接口,這些接口自動映射到生成的wsdl。

AFAICS xfire演變為CXF, CXF主頁告訴我:

CXF支持使用WSDL開始的合同優先開發和從Java開始的代碼優先開發。 對於REST,CXF還支持JAX-RS(符合TCK)前端。

據我所知 ,如果你選擇基於wsdl,你需要wsdl2java工具從現有的WSDL文件生成客戶端存根。 如果兩個對等體都運行java,那么以Java為中心的方法是適用的並且更加透明(因為服務接口/ POJO可以在客戶端/服務器之間共享,運行時生成的傳輸沒有任何存根/代理生成步驟)。

請參閱步驟1:生成骨架代碼

要生成框架和必需的類,可以使用Axis2中提供的WSDL2Java工具。 此工具位於發行版的bin目錄中,可以使用提供的腳本(.bat或.sh)執行。

$ wsdl2java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -ss -sd -d xmlbeans 
    -o ../samples -p org.apache.axis2.userguide

使用SOAP的一個優點是可用的客戶端庫豐富。 最好向您的客戶詢問他們首選的實施技術。

能夠支持Java或C#客戶端的客戶將立即聲明他們對自己最喜歡的錘子的忠誠:-)

如果您的客戶不關心它意味着他們只是想要一些“有效”且“容易/便宜維護”的東西。 如果是這種情況,那么我建議在下面的答案中給出一個解決方案

我是Axis2的忠實粉絲,但根據我的經驗,CXF從復雜的WSDL中生成更具可讀性的代碼。 即便如此,API很少可用...... WSDL傾向於過度設計復雜且多層次的XML模式繼承......客戶端總是將代碼生成框架歸咎於“不可讀”的客戶端代碼在沒有昂貴的XML設計工具的幫助下無法解釋無法解釋的接口規范:-)

我的建議? 如果您控制服務器端代碼,那么簡化WSDL以便它驗證相同的SOAP消息。 您會注意到客戶端代碼也變得更加簡單,您將更好地了解您的Web服務提供的內容。

替代方案(如果您不控制WSDL)使用像SOAPUI這樣的工具來查看正在交換的實際SOAP / XML,並直接生成這些XML消息。

試試wsimport 我以前用過它。 那時我決定反對Axis2,因為它產生了更復雜和更臃腫的存根來編碼。

Spring Web服務可以提供幫助。 我推薦Spring一般。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM