I的概念
RMI(Remote Method Invocation)遠(yuǎn)程方法調(diào)用是一種計(jì)算機(jī)之間利用遠(yuǎn)程對象互相調(diào)用實(shí)現(xiàn)雙方通訊的一種通訊機(jī)制。使用這種機(jī)制,某一臺計(jì)算機(jī)上的對象可以調(diào)用另外一臺計(jì)算機(jī)上的對象來獲取遠(yuǎn)程數(shù)據(jù)。RMI是Enterprise JavaBeans的支柱,是建立分布式Java應(yīng)用程序的方便途徑。在過去,TCP/IP套接字通訊是遠(yuǎn)程通訊的主要手段,但此開發(fā)方式?jīng)]有使用面向?qū)ο蟮姆绞綄?shí)現(xiàn)開發(fā),在開發(fā)一個(gè)如此的通訊機(jī)制時(shí)往往令程序員感覺到乏味,對此RPC(Remote Procedure Call)應(yīng)運(yùn)而生,它使程序員更容易地調(diào)用遠(yuǎn)程程序,但在面對復(fù)雜的信息傳訊時(shí),RPC依然未能很好的支持,而且RPC未能做到面向?qū)ο笳{(diào)用的開發(fā)模式。針對RPC服務(wù)遺留的問題,RMI出現(xiàn)在世人面前,它被設(shè)計(jì)成一種面向?qū)ο蟮耐ㄓ嵎绞?,允許程序員使用遠(yuǎn)程對象來實(shí)現(xiàn)通信,并且支持多線程的服務(wù),這是一次遠(yuǎn)程通訊的革命,為遠(yuǎn)程通信開辟新的里程碑。
RMI的開發(fā)步驟
簡單實(shí)例
首先為服務(wù)建立一個(gè)Model層,注意因?yàn)榇藢ο笮枰F(xiàn)實(shí)進(jìn)行遠(yuǎn)程傳輸,所以必須繼承Serializable
創(chuàng)建遠(yuǎn)程接口PersonService,注意遠(yuǎn)程接口需要繼承Remote
建立PersonServiceImpl實(shí)現(xiàn)遠(yuǎn)程接口,注意此為遠(yuǎn)程對象實(shí)現(xiàn)類,需要繼承UnicastRemoteObject
建立服務(wù)器端,在服務(wù)器端注冊RMI通訊端口與通訊路徑,然后通訊javac命令編譯文件,通過java -server 命令注冊服務(wù)。以下面代碼為例,如果閣下將項(xiàng)目建立于D://RMI/RemotingService文件夾上時(shí),則先輸入D://RMI/RemotingService/src>javac rmi/remotingservice/Program.java獲取Program.class(如何閣下使用的MyEclipse等開發(fā)工具,可跳過此步,直接在*/bin文件夾中直接調(diào)用已經(jīng)生成的Program.class),然后輸入D://RMI/RemotingService/src>java rmi/remotingservice/Program啟動服務(wù)。
最后建立客戶端進(jìn)行測試,注意客戶調(diào)用的RMI路徑必須服務(wù)器配置一致
常見錯誤
原代碼(下載)