隨着企業之間聯繫的不斷緊密,企業之間的系統服務也不斷接受新的挑戰。例如一個金融公司與一家大數據公司展開了合做,金融公司須要調用大數據公司的數據來完成自身業務的開展。那麼服務之間的調用是怎麼實現呢?Http能夠實現,但我以爲web service 是討論這類問題時不能避開的一個答案。java
Web Service個人理解是更接近一種規範了,實現了這套規範的系統,能夠互相之間交互數據已完成業務上的調用。它的特色有跨語言、跨平臺,可以實現不一樣語言之間的互聯互通。歸結一句話:Web Service就是一種跨編程語言和跨操做系統平臺的遠程調用技術。web
Web Service聽從的協議叫作SOAP協議,全稱叫作 Simple Object Access Protocol,簡單對象訪問協議。Web Service服務傳輸的數據格式是XML形式組織的,經過HTTP協議發送和接收結果。所以咱們能夠簡便的理解爲:SOAP協議=HTTP協議+XML數據格式。編程
還有一個重要概念要提,就是WSDL( Web Services Description Language ),發佈好一個web service 服務後怎麼檢查服務是否正常,答案就是查看WSDL文件。查看方式一般是在瀏覽器中打開服務的發佈地址,而後後面加上 .wsdl便可。瀏覽器
下面咱們發佈個簡單的服務。編程語言
服務端代碼以下:函數
import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class HelloService { private String sayHello(String name) { System.out.println("hello " + name); return "Hello " + name; } @WebMethod public String sayHi(String name) { return this.sayHello(name); } public static void main(String[] args) { Endpoint.publish("http://localhost:8081/sayhi", new HelloService()); } }
代碼和明晰,HelloService 是一個Web Service服務類,它對外提供了一個調用方法:sayHi。main函數中,咱們用Endpoint來發布這個服務,發佈方法的參數是地址、服務實例。工具
話很少述,啓動main函數。在瀏覽器中輸入地址:http://localhost:8081/sayhi?wsdl,咱們看瀏覽器返回結果:大數據
說明咱們的服務發佈成功,能夠供外部調用了。this
下來咱們看外部系統如何調用這個服務。spa
在建立一個客戶端工程。而後打開cmd命令行工具,使用jdk自帶的客戶端代碼生成工具wsimport,生成客戶端代碼。生成方式以下:
我當前目錄在e盤,-s表示生成源碼即java文件,-p用來指定包結構。執行命令便可生成代碼了。
執行後個人E盤下生成狀況如圖:
咱們把java文件拷貝到客戶端工程中去。
編寫調用類ServiceClient:
public class ServiceClient { public static void main(String[] args) { HelloServiceService service = new HelloServiceService(); HelloService service2 = service.getHelloServicePort(); String result = service2.sayHi("Wrold"); System.out.println(result); } }
執行查看結果:。
須要特別注意的是wsimport那個定義包結構的參數,必定要輸入正確。