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