遠程方法調(diào)用_第1頁
遠程方法調(diào)用_第2頁
遠程方法調(diào)用_第3頁
遠程方法調(diào)用_第4頁
遠程方法調(diào)用_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼1第18章遠程方法調(diào)用2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼2學習目標

了解Java遠程方法調(diào)用編程2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼3兩大類網(wǎng)絡應用程序網(wǎng)絡通信-----在程序之間移動文件和數(shù)據(jù)分布式應用---就好象在本地一樣DCOMCORBAJavaRMI-----Java分布式技術的基礎好處負載均衡減少數(shù)據(jù)通信量2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼4遠程方法調(diào)用定義Remotemethodinvocation(RMI)istheactionofinvokingamethodofaremoteinterfaceonaremoteobject.Mostimportantly,amethodinvocationonaremoteobjecthasthesamesyntaxasamethodinvocationonalocalobject.2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼5與遠程過程調(diào)用(RPC)的區(qū)別RPC可以用于一個進程調(diào)用另一個進程(很可能在另一個遠程主機上)中的過程,從而提供了過程的分布能力。Java的RMI則在RPC的基礎上向前又邁進了一步,即提供分布式對象間的通訊,允許我們獲得在遠程進程中的對象(稱為遠程對象)的引用,進而通過引用調(diào)用遠程對象的方法,就好像該對象是與你的客戶端代碼同樣運行在本地進程中一樣。RMI使用了術語"方法"(Method)強調(diào)了這種進步,即在分布式基礎上,充分支持面向?qū)ο蟮奶匦浴?023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼6對象的串行化在同一虛擬機上,當對象作為參數(shù)傳遞時,是引用傳遞。如何在不同虛擬機上傳遞對象?將對象轉(zhuǎn)化為字節(jié)序列,再將這些字節(jié)序列發(fā)送給遠程機器。-----類似傳值調(diào)用傳遞特殊的遠程對象引用----當遠程機器調(diào)用此引用的方法時,該調(diào)用會通過Internet回到最初創(chuàng)建此對象的機器,類似引用調(diào)用。RMI:綜合運用。2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼7工作原理P621圖12023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼82023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼9如何定位遠程對象?RMI的命名/注冊服務正是解決這一問題的。當服務器端想向客戶端提供基于RMI的服務時,它需要將一個或多個遠程對象注冊到本地的RMI注冊表中。每個對象在注冊時都被指定一個將來用于客戶程序引用該對象的名稱??蛻舫绦蛲ㄟ^命名服務,指定類似URL的對象名稱就可以獲得指向遠程對象的遠程引用。在Naming

中的lookup()

方法找到遠程對象所在的主機后,它將檢索該主機上的RMI注冊表,并請求所需的遠程對象。如果注冊表發(fā)現(xiàn)被請求的遠程對象,它將生成一個對該遠程對象的遠程引用,并將其返回給客戶端,客戶端則基于遠程引用生成相應的Stub對象,并將引用傳遞給調(diào)用者。2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼10RMI編程定義遠程接口。這一步是通過擴展java.rmi.Remote

接口,并定義所需的業(yè)務方法實現(xiàn)的。定義遠程接口的實現(xiàn)類。即實現(xiàn)上一步所定義的接口,給出業(yè)務方法的具體實現(xiàn)邏輯。編譯遠程接口和實現(xiàn)類,并通過RMI編譯器rmic

基于實現(xiàn)類生成所需的Stub和Skeleton類。2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼112023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼12定義遠程接口遠程接口必須直接或者間接的擴展自java.rmi.Remote

接口。遠程方法必須聲明拋出java.rmi.RemoteException

異常。在遠程方法聲明中,作為參數(shù)或者返回值的遠程對象,或者包含在其它非遠程對象中的遠程對象,必須聲明為其對應的遠程接口,而不是實際的實現(xiàn)類。2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼13舉例:Fibonacci接口

P6232023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼14實現(xiàn)遠程接口必須繼承java.rmi.server.UnicastRemoteObject

或其子類。UnicastRemoteObject

類實現(xiàn)了我們前面所講的基于TCP/IP的點對點通訊機制。該類構(gòu)造函數(shù)的最重要的作用就是調(diào)用UnicastRemoteObject

類的exportObject()方法。導出(Export)對象是指使遠程對象準備就緒,可以接受進來的調(diào)用的過程。而這個過程的最重要內(nèi)容就是建立服務器套接字,監(jiān)聽特定的端口,等待客戶端的調(diào)用請求。2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼15舉例:FibonacciImpl類

P6252023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼16服務器端注冊舉例:FibonacciServerP626生成非守護進程,服務器程序繼續(xù)運行。2023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼17編寫客戶程序舉例:FibonacciClientP6292023年2月6日廣州大學Java網(wǎng)絡編程主講:劉淼18運行編譯服務器程序:javacFibonacciServer.java生成樁類:rmicFibonacciImpl啟動服務器啟動注冊表:rmiregistry&新啟動JVM,啟動服務器:javaFibonacciServer編譯客戶程序:javacFibonacciClient.java運行客戶程序:javaFibonacciClientrmi://localhost/fibonacci01234555155

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論