本文做者在學習使用Java開發Web Service(不包括Restful)時,因爲不知道Java有這麼多框架支持開發Web Service一度陷入迷惘,不知道這些框架各有java
什麼不一樣,各有什麼優缺點。通過幾天的查資料、實驗、失敗、再查資料、再實驗的過程,終於有了一個大概的瞭解,也把本身的學習成果跟你們分享一下:web
用Java開發Web Service通常有三種方式,本文在Idea下分別使用三種方式並結合Spring容器實現了三個Demo,下面爲你們一一介紹。spring
一、Axis、XFire和CXF方式瀏覽器
這幾種框架都採用「代碼優先」的方式開發Web Service,即先開發出普通的Java代碼,而後使用框架自動將Java對象方法發佈成Web Service。框架
Idea自帶Axis框架,在建立工程時選擇便可(Web Application->WebServices,Version中選擇Apache Axis)。ide
該方式的開發過程很簡單,實現好web service 類後,點擊Idea窗口中的Tool->Web Service->Generate wsdl from java code,配置好服務地址便可。學習
該示例較簡單未上傳。測試
二、Spring-WS方式url
該框架是「文檔優先」方式,即先制定出報文協議,而後再開發具體的服務應用。idea
Idea自帶該框架,在建立工程時選擇(Spring->Spring Web Services)便可自動下載相關包。
詳細開發步驟以下:
2.1 在web.xml中添加servlet
2.二、 在WEB-INF下創建配置文件spring-ws-servlet.xml
2.三、 在resources目錄下創建hello.wsdl
2.4 、建立web service 類和終結點
2.五、 在spring-ws-servlet.xml文件中配置終結點bean
示例Demo下載:http://files.cnblogs.com/wenjingu/springws.zip
三、JAX-WS方式
JAX-WS是JDK自帶的框架,它是Java的Web服務標準。該框架同時支持「代碼優先」方式和「文檔優先」方式,但彷佛對「文檔優先」方式的支持更好一些。
不少JAX-WS開發者都推薦使用「文檔優先」方式。Idea自帶該框架,在建立工程時選擇(Web Application->WebServices,Version默認)便可自動下載相關包。
開發步驟以下:
3.一、「代碼優先」方式與1相似
3.二、「文檔優先」方式與2相似
示例Demo下載:http://files.cnblogs.com/wenjingu/jaxws.zip 只傳了服務端,客戶端按4.2節的步驟建立便可。
四、測試
4.一、在瀏覽器輸入:http://localhost:8080/services/HelloWorld?wsdl能夠顯示該文件內容,輸入:http://localhost:8080/services/HelloWorld可顯示相似以下內容:
4.二、在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.三、不少開發者建議用SoapUI測試,本文還沒有使用,有時間再研究下。
補充:
CXF如今已實現了JAX-WS2.0規範,開始提供對JAX-WS API的支持。