Spring學習(七)——開發Web Service的幾種方式


本文作者在學習使用Java開發Web Service(不包括Restful)時,由於不知道Java有這么多框架支持開發Web Service一度陷入迷惘,不知道這些框架各有

什么不同,各有什么優缺點。經過幾天的查資料、實驗、失敗、再查資料、再實驗的過程,終於有了一個大概的了解,也把自己的學習成果跟大家分享一下:

用Java開發Web Service一般有三種方式,本文在Idea下分別使用三種方式並結合Spring容器實現了三個Demo,下面為大家一一介紹。

1、Axis、XFire和CXF方式

這幾種框架都采用“代碼優先”的方式開發Web Service,即先開發出普通的Java代碼,然后使用框架自動將Java對象方法發布成Web Service。

Idea自帶Axis框架,在創建工程時選擇即可(Web Application->WebServices,Version中選擇Apache Axis)。

該方式的開發過程很簡單,實現好web service 類后,點擊Idea窗口中的Tool->Web Service->Generate wsdl from java code,配置好服務地址即可。

該示例較簡單未上傳。

2、Spring-WS方式

該框架是“文檔優先”方式,即先制定出報文協議,然后再開發具體的服務應用。

Idea自帶該框架,在創建工程時選擇(Spring->Spring Web Services)即可自動下載相關包。

詳細開發步驟如下:

2.1 在web.xml中添加servlet

2.2、 在WEB-INF下建立配置文件spring-ws-servlet.xml

2.3、 在resources目錄下建立hello.wsdl

2.4 、創建web service 類和終結點

2.5、 在spring-ws-servlet.xml文件中配置終結點bean

示例Demo下載:http://files.cnblogs.com/wenjingu/springws.zip

3、JAX-WS方式

JAX-WS是JDK自帶的框架,它是Java的Web服務標准。該框架同時支持“代碼優先”方式和“文檔優先”方式,但似乎對“文檔優先”方式的支持更好一些。

很多JAX-WS開發者都推薦使用“文檔優先”方式。Idea自帶該框架,在創建工程時選擇(Web Application->WebServices,Version默認)即可自動下載相關包。

開發步驟如下:

3.1、“代碼優先”方式與1類似

3.2、“文檔優先”方式與2類似

示例Demo下載:http://files.cnblogs.com/wenjingu/jaxws.zip 只傳了服務端,客戶端按4.2節的步驟創建即可。

4、測試

4.1、在瀏覽器輸入:http://localhost:8080/services/HelloWorld?wsdl可以顯示該文件內容,輸入:http://localhost:8080/services/HelloWorld可顯示類似如下內容:

1

 

4.2、在Idea中創建一個WebService Client工程,idea會自動創建一些代碼,修改后如下所示:

public class HelloWorldClient {
  public static void main(String[] argv) {
      mypackage.HelloWorld service = new HelloWorldService().getHelloWorldPort();
      //invoke business method
      service.sayHelloWorldFrom("192.168.20.106");
  }
}

執行后會在服務端打印:Hello, world, from 192.168.20.106。

4.3、很多開發者建議用SoapUI測試,本文尚未使用,有時間再研究下。

 

補充:

CXF現在已實現了JAX-WS2.0規范,開始提供對JAX-WS API的支持。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM