前言
有一段時間沒有好好學習了,因爲遇到一些糟心的事情,上班一直在划水摸魚,本來打算摸魚摸到事情塵埃落定。但想到與其摸魚,還不如多學習點東西,不斷的成長提升自己。
webservice簡介
webservice:一種跨語言和跨平臺的遠程調用技術,即JAVA應用程序可以通過websrvice調用PHP或者Python等程序提供的服務,反之亦然。
實現一個webservice需要了解它的幾個重要點(SOAP,WSDL,UDDI)
SOAP
簡單來說: SOAP = HTTP + XML 就是一個簡單的數據交換協議
客戶端通過發送一個HTTP請求,這個HTTP請求裏面包含一個XML,服務端接收到請求後解析這個XML然後來調用對應的服務和方法,返回對應的數據。
WSDL
簡單來說:WSDL就是告訴調用者應該怎麼填寫SOAP當中的XML文件裏面的內容。服務端具體提供了什麼服務,該怎麼調用這個服務,該傳遞什麼類型的參數。會返回什麼類型的數據等等。
UDDI
簡單來說:UDDI是用於描述、發現、集成Web Service的技術。
webservice相關框架
- JWS:JAVA語言對WebService服務的一種實現,可以用於開發以及發佈webservice服務。
- Axis2:一個重量級的webservice框架,功能強大。
- CXF:一個基於XFire改造後的webservice框架,高性能,開發比較方便。
webservice接口和http接口的區別
web service相對http (post/get)
1.接口中實現的方法和要求參數一目瞭然
2.不用擔心大小寫問題
3.不用擔心中文urlencode問題
4.代碼中不用多次聲明認證(賬號,密碼)參數
5.傳遞參數可以爲數組,對象等…
6.由於要解析XML,效率相對較慢。
7.在對參數要求不嚴謹的情況下完全可以由HTTP請求代替。
一個簡單的webservice服務
通過JAVA自帶的JWS發佈一個webservice服務。
客戶端代碼:
1 在類上加上註解:@webservice表明這是一個webservice服務
@WebService
public class DemoWebServiceImpl {
@Override
@WebMethod
public String getName(Integer code) {
if(code==1){
return "張三";
}
return "李四";
}
}
2 通過Endpoint 發佈一個webservice服務。
public static void main(String[] args) {
//設置webservice地址
String address = "http://192.168.15.234:9090/webservice";
//發佈webservice
Endpoint.publish(address , new DemoWebServiceImpl());
System.out.println("hello world");
}
3 在瀏覽器當中輸入地址:http://192.168.15.234:9090/webservice?wsdl 如果返回一個xml就表明發佈成功了。
在返回的xml當中每個方法對應一個XSD地址。在瀏覽器當中輸入對應的xsd地址就可以看到該方法需要的參數和返回的值類型。
服務端調用:
通過測試工具SOAPUI進行模擬調用:
一個簡單的webservice服務就搞定了。