摘要:但是傳統(tǒng)并不能很好地應(yīng)用于分布式對象系統(tǒng)。而則支持存儲(chǔ)于不同地址空間的程序級對象之間彼此進(jìn)行通信,實(shí)現(xiàn)遠(yuǎn)程對象之間的無縫遠(yuǎn)程調(diào)用。第一個(gè)例子服務(wù)端接口服務(wù)端接口實(shí)現(xiàn)創(chuàng)建服務(wù)端注冊號(hào)端口,注意這一步注冊可以注冊到別的機(jī)器上。
RPC和RMI的關(guān)系
RMI全稱是Remote Method Invocation(遠(yuǎn)程方法調(diào)用),Java RMI威力體現(xiàn)在它強(qiáng)大的開發(fā)分布式網(wǎng)絡(luò)應(yīng)用的能力上,是純Java的網(wǎng)絡(luò)分布式應(yīng)用系統(tǒng)的核心解決方案之一。其實(shí)它可以被看作是RPC的Java版本。但是傳統(tǒng)RPC并不能很好地應(yīng)用于分布式對象系統(tǒng)。而Java RMI 則支持存儲(chǔ)于不同地址空間的程序級對象之間彼此進(jìn)行通信,實(shí)現(xiàn)遠(yuǎn)程對象之間的無縫遠(yuǎn)程調(diào)用。
RMI第一個(gè)例子//服務(wù)端接口 import java.rmi.Remote; public interface URLDispatcher extends Remote { String get()throws java.rmi.RemoteException; void add(String webAddress)throws java.rmi.RemoteException;; } //服務(wù)端接口實(shí)現(xiàn) import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.server.UnicastRemoteObject; public class URLManagement extends UnicastRemoteObject implements URLDispatcher { protected URLManagement() throws RemoteException { super(); } public URLManagement(int port) throws RemoteException { super(port); } @Override public String get() throws RemoteException { System.out.println("www.baidu.com"); return "www.baidu.com"; } @Override public void add(String webAddress) throws RemoteException {} public static void main(String[] args) { try { //創(chuàng)建服務(wù)端 URLDispatcher hello = new URLManagement(1098); //注冊1098號(hào)端口,注意這一步注冊可以注冊到別的機(jī)器上。 LocateRegistry.createRegistry(1098); //綁定服務(wù)端到指定的地址,這里的localhost對應(yīng)的上一步注冊端口號(hào)的機(jī)器 java.rmi.Naming.rebind("rmi://localhost:1098/URLDispatcher", hello); System.out.println("Ready"); } catch (Exception e) { e.printStackTrace(); } } } //客戶端 import java.rmi.Naming; public class Main { public static void main(String[] args){ try { //客戶端查找指定的服務(wù) URLDispatcher hello = (URLDispatcher)Naming.lookup("rmi://localhost:1099/URLDispatcher"); //打印的結(jié)果應(yīng)該是www.baidu.com System.out.println(hello.get()); } catch (Exception e) { e.printStackTrace(); } } }
注意:服務(wù)端啟動(dòng)后不會(huì)自動(dòng)關(guān)閉,會(huì)一直等待客戶端連接。
參考資料:RMI學(xué)習(xí)以及深入講解
Java RMI 入門指南
Java RMI 服務(wù)器框架
Spring與RMI集成實(shí)現(xiàn)遠(yuǎn)程訪問
更多文章:http://blog.gavinzh.com
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65609.html
摘要:關(guān)于中文為了處理漢字,程序員設(shè)計(jì)了用于簡體中文的和用于繁體中文的。年一共收錄了個(gè)字符,包括個(gè)漢字和個(gè)其它符號(hào)。年的是取代的正式國家標(biāo)準(zhǔn)。區(qū)分中文編碼的方法是高字節(jié)的最高位不為。 Python 2和 Python3的區(qū)別 3.0有Unicode support ,這代表著可以直接默認(rèn)寫中文,2是不行的 有一些庫改名了,但表面上變化不大,都是些大寫變小寫,下劃線沒了之類的 Twisted...
摘要:我要學(xué)好分布式通信框架技術(shù)我要學(xué)好分布式分布式框架是最近幾年的熱門。先寫個(gè)測試用的遠(yuǎn)程接口,注意接口要拋異常實(shí)現(xiàn)遠(yuǎn)程接口,并且繼承創(chuàng)建服務(wù)器程序方法注冊遠(yuǎn)程對象創(chuàng)建客戶端程序調(diào)用過程流程去注冊中心注冊,端啟動(dòng)服務(wù)。 title: 我要學(xué)好分布式-RMI通信框架date: 2018-07-26 19:28:30 tags: [技術(shù),我要學(xué)好分布式] 分布式框架是最近幾年的熱門??墒且?..
摘要:讓我們優(yōu)先來實(shí)現(xiàn)一個(gè)的案例吧。為了防止被防火墻攔截,需要強(qiáng)制制定的通信端口,一般通過自定義一個(gè)類來實(shí)現(xiàn)。完美支持語言所獨(dú)有的特性,不支持其他語言。使用了原生序列化,所有序列化對象必須實(shí)現(xiàn)接口。 本博客 貓叔的博客,轉(zhuǎn)載請申明出處 學(xué)習(xí)系列 RPC框架是啥? Java自帶RPC實(shí)現(xiàn),RMI框架入門 首先RMI(Remote Method Invocation)是Java特有的一種RPC實(shí)...
摘要:為了安全考慮有些服務(wù)器會(huì)被限制登錄本文介紹如何獲取遠(yuǎn)程服務(wù)器上進(jìn)程的運(yùn)行狀態(tài)啟動(dòng)服務(wù)在服務(wù)器端啟動(dòng)服務(wù)后遠(yuǎn)程的機(jī)器可以通過協(xié)議獲取服務(wù)器上程序的運(yùn)行狀態(tài)在服務(wù)器上創(chuàng)建的授權(quán)文件假設(shè)文件路徑為內(nèi)容如下如果你的目錄不是的話請改為正確的值接下來通 為了安全考慮, 有些服務(wù)器會(huì)被限制登錄. 本文介紹如何獲取遠(yuǎn)程服務(wù)器上 Java 進(jìn)程的運(yùn)行狀態(tài). 啟動(dòng) jstatd 服務(wù) 在服務(wù)器端啟動(dòng) ...
閱讀 1228·2023-04-25 20:56
閱讀 2286·2023-04-25 14:42
閱讀 1036·2023-04-25 14:06
閱讀 2876·2021-10-14 09:42
閱讀 2153·2021-09-22 16:03
閱讀 1001·2021-09-13 10:30
閱讀 1356·2019-08-29 15:41
閱讀 1812·2019-08-29 12:55