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