使用WebService實現遠端呼叫
上篇部落格講解了使用Socket實現遠端呼叫,今天這篇講解WebService實現遠端呼叫。首先在開發之前,我們應該有自己的思路,心裡面想好開發的大體步驟,然後我們可以開始開發了。下面是我在寫的時候的一個思路,一起展示給大家。
首先需要有客戶端和服務端
服務端:
第一步:建立一個java工程,不需要匯入jar包。
第二步:建立一介面。在Webservice中叫做SEI(wsdl中叫做PortType)
第三步:建立一實現類。需要在實現類上加一個、@Webservice註解
第四步:釋出服務。EndPoint.publish釋出服務。
建立一個介面(天氣查詢服務SEI)
public interface WeatherInterface {
String getWeatherByCityName(String cityName);
}
SEI實現類
@WebService
public class WeatherInterfaceImpl implements WeatherInterface {
@Override
public String getWeatherByCityName(String cityName) {
System.out.println("接收到客戶端傳送的城市名稱:" + cityName);
//查詢天氣
String resultString = "暖和點兒了";
System.out.println("返回天氣資訊:" + resultString);
return resultString;
}
}
建立天氣查詢服務釋出類
這裡我們建議埠號為1024以後的,因為1024以下好多都是系統的埠號,容易起衝突。
public class WeatherServer {
public static void main(String[] args) {
//第一個引數:服務釋出的url
//第二個引數:SEI實現類物件
Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());
}
}
檢視服務是否啟動,出現如下圖則說明發布成功。
使用wsdl
檢視wsdl:訪問服務釋出地址+?wsdl可以使用wsimport工具生成客戶端呼叫程式碼。
在學之前,先簡單介紹一下,wsimport是jdk自帶的webservice客戶端工具,可以根據wsdl文件生成客戶端呼叫程式碼(java程式碼)無論伺服器端的WebService是用什麼語言寫的,都可以生成呼叫webservice的客戶端程式碼,服務端通過客戶端程式碼呼叫webservice。 使用方法:
常用引數為:
-d<目錄> - 將生成.class檔案。預設引數。
-s<目錄> - 將生成.java檔案(一般都使用這個)。
-p<生成的新包名> -將生成的類,放於指定的包下。如果不指定包名就是wsdl名稱空間的倒序。
(wsdlurl) - http://server:port/service?wsdl,必須的引數。
示例:
C:/> wsimport -s . http://127.0.0.1:1234/weather?wsdl
注意:-s不能分開,-s後面有個小點
新建一個工程,找到工程的src目錄:
重新整理之後我們看到客戶端生成了如下程式碼:
一般我們用WeatherInterfaceImpl,和WeatherInterfaceImplService叫做服務檢視,就夠了。
客戶端的開發步驟。
實現步驟:
第一步:建立一個java工程
第二步:建立一服務檢視物件
第三步:從服務檢視中獲得PortType物件
第四步:呼叫PortType的方法(可以實現遠端通訊)
第五步:接收方法的返回值(服務端響應的結果)
第六步:列印結果。
public class WeatherClient {
public static void main(String[] args) {
//建立服務檢視
WeatherInterfaceImplService service = new WeatherInterfaceImplService();
//從服務檢視中獲得PortType物件
WeatherInterfaceImpl portType = service.getWeatherInterfaceImplPort();
//呼叫服務端方法
String weatherInfo = portType.getWeatherByCityName("北京");
System.out.println(weatherInfo);
}
}
最終我們看到的結果:
服務端控制檯:客戶端控制檯:
小結:
既然之前寫了socket實現遠端通訊呼叫,小結裡面就寫一寫兩者的區別吧。
Webservice和sockt的對比
Socket:使用流通訊,需要自定義協議。程式設計複雜。
優點:通訊效率高,速度快,適合於傳輸大資料。
缺點:程式設計複雜。
Webservice:封裝所有通訊的細節,只需要像呼叫本地方法一樣使用即可。很方便。
優點:程式設計簡單。面向物件開發。
缺點:傳輸效率低。不適合傳輸大資料的情況。
相關推薦
使用WebService實現遠端呼叫
上篇部落格講解了使用Socket實現遠端呼叫,今天這篇講解WebService實現遠端呼叫。首先在開發之前,我們應該有自己的思路,心裡面想好開發的大體步驟,然後我們可以開始開發了。下面是我在寫的
WebService技術總結(三):專案實戰——使用XML,dom4j,Xpath實現遠端呼叫
XML具有跨平臺性,在企業webservice開發中, 經常將請求引數封裝為XML,並且返回一個XML作為結果。 需求: 客戶端將發票號碼,發票程式碼作為條件,呼叫服務端,查詢金額,稅額資訊 客戶端請求引數xml形式: <?xml version="
## SpringBoot Dubbo Zookeeper 實現遠端呼叫
首先我們來了解dubbo+zookeeper是個什麼東西吧? Dubbo是 阿里巴巴公司開源的一個高效能優秀的服務框架,使得應用可通過高效能的 RPC 實現服務的輸出和輸入功能,可以和 Spring框架無縫整合。 ZooKeeper是一個分散式的,開放原始碼的
客戶端負載均衡器 Ribbon 整合Eureka實現遠端呼叫
Ribbon介紹 Ribbon是Netflix公司開源的一個負載均衡的專案(https://github.com/Netflix/ribbon),它是一個基於HTTP、TCP的客戶端負載均衡器。 什麼是負載均衡? 負載均衡是微服務架構中必須使用的技術,通過負載均衡來實
Hessian實現遠端呼叫
Hessian是一個輕量級的remoting on http工具,採用的是Binary RPC協議,所以它很適合於傳送二進位制資料,同時又具有防火牆穿透能力。Hessian一般是通過Web應用來提供服務,因此非常類似於平時我們用的WebService。只是它
webservice瀏覽器遠端呼叫測試
webservice開發測試階段,需要頻繁地呼叫webservice方法。怎麼能在遠端通過通過瀏覽器來呼叫webservice呢?答案很簡單,只需要在你的webconfig中,新增如下配置即可。 <system.web> <webSe
利用匿名管道實現遠端呼叫CMD
在一個程序裡用雙管道來回顯,程式碼如下: #include "windows.h" #include "stdio.h" unsigned long WINAPI readFuc(void *p); HANDLE hReadPipeCmd = NUL
Storm系列(五)DRPC實現遠端呼叫
Trident簡介 Trident擁有一流的抽象,可以讀取和寫入有狀態的來源。狀態可以是拓撲的內部 - 例如,儲存在記憶體中並由HDFS支援 - 或者外部儲存在Memcached或Cassandra等資料庫中。在任何一種情況下,Trident API都沒有區別。 Trident以容錯的方式管理狀態
RPC入門總結(三)RMI+Zookeeper實現遠端呼叫框架
一、RMI的弊端 RMI是侷限於Java語言中的RPC框架,除了其語言侷限之外,其實現上還有其他的一些弊端。 1. RMI的I/O模型使用BIO模型(偽非同步I/O),使用BIO和執行緒池的方式在大資料量、多連線情況下存在效能瓶頸。 2. RMI 使用了 Java 預設的
中介軟體技術CORBA的應用,實現遠端呼叫資料庫。
CORBA簡介 CORBA(Common Object Request Broker Architecture,公共物件請求代理體系結構,通用物件請求代理體系結構)是由OMG組織制訂的一種標準的面向物件應用程式體系規範。或者說CORBA體系結構是物件管理組織(
Dubbo學習筆記:註冊到zookeeper並實現遠端呼叫
我們選擇zookeeper作為註冊中心。 一、首先要下載zookeeper,把程式解壓,進入conf,把zoo_sample.cfg修改為zoo.cfg。進入bin資料夾,在這裡開啟命令列,輸入zkserver.cmd,這樣就啟動了zookeeper。 可以看出,zook
android app通過Geth RPC介面實現遠端呼叫
記錄一下APP怎麼通過以太坊的RPC介面實現遠端呼叫。此過程的環境為Window7和Android studio2.2.3。以web3_clientVersion為例。更多用法參考Geth JSON-RPC和Management APIs。首先啟動geth私有鏈並設定RPC埠
(三)遠端服務:RMI 服務實現遠端呼叫
RMI 與 Spring RMI 是 Java 平臺實現遠端呼叫的一種方式,於 JDK1.1 引入 Java 平臺。“Spring 簡化了 RMI 模型,它提供了一個代理工廠 Bean ,能讓我
淺談WebService跨平臺遠端呼叫技術
基於瀏覽器的瘦客戶端應用程式並不是 因為瘦客戶能夠提供更好的使用者介面,而是因為它能夠避免花在桌面應用程式釋出上的高成本。釋出桌面應用程式成本很高,一半是因為應用程式安裝和配置的問 題,另一半是因為客戶和伺服器之間通訊的問題。傳統的Windows富客戶應用程式使用DCOM來與伺服器進行通訊和呼叫遠端物件。
Dubbo實現遠端呼叫介面
1. Dubbo框架的簡單格式如下如所示: 1)提供了一個api包,用於標出provider提供的所有介面名稱; 2)提供一個provider(生產者)包,用於實現所有的介面,並可以註冊到zookeeper上,統一管理; 3)提供一個consumer(
Spring RMI實現遠端呼叫
1. Spring 除了使用基於 HTTP 協議的遠端呼叫方案,還為開發者提供了基於 RMI 機制的遠端呼叫方法, RMI 遠端呼叫網路通訊實現是基於 TCP/IP 協議完成的,而不是通過 HTTP 協議。 在 Spring RMI 實現中,集成了標準的 RMI-JRIM
Aittit rpc的實現協議 JSON-RPC XML-RPC . Ws協議webservice 目錄 1. XML-RPC協議 1 1.1. JSON-RPC遠端呼叫協議 - CieloSun
Aittit rpc的實現協議 JSON-RPC XML-RPC . Ws協議webservice 目錄 1. XML-RPC協議 1 1.1. JSON-RPC遠端呼叫協議 - CieloSun - 部落格園.html 1 1.2.
Aittit rpc的實現協議 JSON-RPC XML-RPC . Ws協議webservice 目錄 1. XML-RPC協議 1 1.1. JSON-RPC遠端呼叫協議
Aittit rpc的實現協議 JSON-RPC XML-RPC . Ws協議webservice 目錄 XML-RPC協議 xml-rpc 是一套規範及其一系列的實現,允許執行在不同作業系統、不同環境的程式基於internet進行
遠端呼叫webservice介面的實現方法
我們如何通過遠端的方式呼叫webservice介面,今天做以如下分享。 關於java webservice的框架,主要有四種, 方法1:HttpClient3.0.x;HttpClient4.x
JAVA RPC遠端呼叫伺服器實現使用者登入、註冊
先來百科掃盲 : 什麼是 RPC(反正我也剛看的) RPC(Remote Procedure Call)—遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。在OSI