一、背景介紹
RMI是Java的一組擁護(hù)開發(fā)分布式應(yīng)用程序的API。RMI使用Java語(yǔ)言接口定義了遠(yuǎn)程對(duì)象,它集合了Java序列化和Java遠(yuǎn)程方法協(xié)議(Java Remote Method Protocol)。
Java遠(yuǎn)程方法協(xié)議(英語(yǔ):Java Remote Method Protocol,JRMP)是特定于Java技術(shù)的、用于查找和引用遠(yuǎn)程對(duì)象的協(xié)議。這是運(yùn)行在Java遠(yuǎn)程方法調(diào)用(RMI)之下、TCP/IP之上的線路層協(xié)議
RMI技術(shù)早在JDK1.1中就出現(xiàn)了,并且在JDK1.5版本做了重大改進(jìn),使得我們可以更加簡(jiǎn)單的使用RMI技術(shù)來(lái)支持分布式應(yīng)用。關(guān)于詳細(xì)的技術(shù)變更歷史,可以參見官方的 Java RMI release Note。
通過RMI技術(shù),本地虛擬機(jī)JVM可以調(diào)用存在于另外一個(gè)JVM中的對(duì)象方法,就好像該虛擬機(jī)調(diào)用存在于本地JVM的某個(gè)對(duì)象方法一樣。而另外一個(gè)JVM可以與本地JVM在同一臺(tái)物理機(jī),也可以屬于不同的物理機(jī)。
常見的可以實(shí)現(xiàn)遠(yuǎn)程調(diào)用的技術(shù)還包括了 RPC,CORBA,Web Service,這里不一一介紹,需要了解的同學(xué)可以 google,以下只關(guān)注 RMI 這個(gè)只針對(duì) Java 語(yǔ)言的遠(yuǎn)程調(diào)用技術(shù)的一些闡述。
二、知識(shí)剖析
( 1 ) RMI 注冊(cè)表(參見 LocateRegistry 類)
*為了使得客戶端能夠查找到服務(wù)端對(duì)外提供的遠(yuǎn)程對(duì)象,RMI需要維護(hù)一個(gè)RMI注冊(cè)表,該注冊(cè)表維護(hù)了對(duì)于客戶端而言的遠(yuǎn)程對(duì)象位置,對(duì)外提供了服務(wù),服務(wù)端需要將要外提供服務(wù)的對(duì)象的代理綁定到RMI注冊(cè)表中。
*RMI注冊(cè)表可以跟服務(wù)端不在一臺(tái)主機(jī)上。
*RMI注冊(cè)表的啟動(dòng)有兩種方式:一種是通過命令行 rmiregistry $port 在命令行啟動(dòng);另外一種是通過 LocateRegistry 類的 createRegistry(int port) 方法啟動(dòng)。
(2)
客戶端查找遠(yuǎn)程對(duì)象,服務(wù)端注冊(cè)遠(yuǎn)程對(duì)象的多樣性
也許在網(wǎng)上查看各種RMI示例代碼時(shí)我們常常發(fā)現(xiàn)客戶端查找遠(yuǎn)程對(duì)象,服務(wù)端注冊(cè)遠(yuǎn)程對(duì)象使用的代碼都不盡相同,我在學(xué)習(xí)過程中見到的有三種途徑:
LocateRegistry 類的對(duì)象的 rebind() 和 lookup() 來(lái)實(shí)現(xiàn)綁定注冊(cè)和查找遠(yuǎn)程對(duì)象的
利用命名服務(wù) java.rmi.Naming 類的 rebind() 和 lookup() 來(lái)實(shí)現(xiàn)綁定注冊(cè)和查找遠(yuǎn)程對(duì)象的
( 3 )
利用JNDI(Java Naming and Directory Interface,Java命名和目錄接口) java.naming.InitialContext 類來(lái) rebind() 和 lookup() 來(lái)實(shí)現(xiàn)綁定注冊(cè)和查找遠(yuǎn)程對(duì)象的
三、
Spring RMI一開始看網(wǎng)上的資料感覺很簡(jiǎn)單,但一次一次的失敗告訴我,那不簡(jiǎn)單
提問與回答
笑然:rmi?服務(wù)端不指定端口?怎么樣
答:不指定會(huì)使用默認(rèn)的1099
程遠(yuǎn):rmi?怎么在service做負(fù)載均衡
答:配置權(quán)
明達(dá):可以通過spring對(duì)rmi更加簡(jiǎn)化么。
可以將rmi的xml文件集成到spring里面
“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開始,找個(gè)師兄,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷茫”。
這里是技能樹.IT修真院,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化,成長(zhǎng)可見化,師兄1對(duì)1免費(fèi)指導(dǎo)??靵?lái)與我一起學(xué)習(xí)吧 !