小編給大家分享一下使用java編寫一個rmi的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、周口網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為周口等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
RMI 指的是遠程方法調(diào)用 (Remote Method Invocation)。它是一種機制,能夠讓在某個 Java虛擬機上的對象調(diào)用另一個 Java 虛擬機中的對象上的方法??梢杂么朔椒ㄕ{(diào)用的任何對象必須實現(xiàn)該遠程接口。
調(diào)用這樣一個對象時,其參數(shù)為 "marshalled" 并將其從本地虛擬機發(fā)送到遠程虛擬機(該遠程虛擬機的參數(shù)為 "unmarshalled")上。該方法終止時,將編組來自遠程機的結(jié)果并將結(jié)果發(fā)送到調(diào)用方的虛擬機。如果方法調(diào)用導(dǎo)致拋出異常,則該異常將指示給調(diào)用方。
提供遠端訪問的時候,我們首先需要定義遠端能夠訪問哪些東西,在Java中,定義這類接口需要實現(xiàn)Remote接口
public interface Business extends Remote{ public String echo(String msg) throws RemoteException; }
定義完接口之后,這些功能是需要我們自己在Server端實現(xiàn)的,因此,聲明一個類實現(xiàn)我們提供接口。
public class BusinessImpl implements Business{ @Override public String echo(String msg) throws RemoteException { if("quit".equalsIgnoreCase(msg)) { System.out.println("Server will be shutdown"); System.exit(0); } System.out.println("Message from client:"+msg); return "Server response:"+msg; } }
實現(xiàn)完這個方法之后,有一個問題是,怎么運行,既然是遠端訪問,肯定得有端口號,肯定得有實例,所以我們還需要注冊我們的代碼
public class Server { public static final String SERVER_REGISTER_NAME = "BusineeDemo"; public static void main(String[] args) throws RemoteException { int port = 2016; Business business = new BusinessImpl(); UnicastRemoteObject.exportObject(business,port); Registry registry = LocateRegistry.createRegistry(1099); registry.rebind(SERVER_REGISTER_NAME, business); } }
這里有兩個Java的類:UnicastRemoteObject和LocateRegistry
一個接口:Registry
Registry接口:對簡單的遠端對象提供一個遠端接口用于提供存儲和獲取遠端對象的引用,而這些是通過任意的String類型的變量名稱獲取,bind,unbind,rebind方法是用于更改注冊的這些名稱,lookup和list方法是用于查詢當(dāng)前當(dāng)前已經(jīng)綁定的對象。
UnicastRemoteObject類:用于導(dǎo)出一個遠端對象
LocateRegistry類:是一個用來獲得遠端調(diào)用對象引用的輔助類程序,主要是在一個特定的IP上構(gòu)建一個遠端對象來接受來自特定端口的回調(diào)。
簡單的服務(wù)端完成了,現(xiàn)在來看客戶端:
客戶端代碼就更加簡單,前面我們提到我們可以通過Registry的lookup方法來獲取當(dāng)前已經(jīng)綁定的服務(wù),所以很自然,我們首先要獲得這個Registry
public class Client { public static void main(String[] args) throws RemoteException, NotBoundException { // Registry registry = LocateRegistry.getRegistry("localhost"); Registry registry = LocateRegistry.getRegistry("localhost", 1099); Business business = (Business) registry.lookup(Server.SERVER_REGISTER_NAME); System.out.println(business.echo("Hello Server")); } }
以上是使用java編寫一個rmi的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文名稱:使用java編寫一個rmi的方法
路徑分享:http://www.rwnh.cn/article26/jijpcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、品牌網(wǎng)站制作、企業(yè)建站、網(wǎng)站制作、網(wǎng)站收錄、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)