麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

深入Java分布式計算的使用分析

2019-11-26 16:07:55
字體:
來源:轉載
供稿:網友

如果所有組件都在同一臺計算機的同一個Java虛擬機的同一個堆空間上執行是最簡單的,但實際中我們面對的往往不是如此單一的情況,如果用戶端只是個能夠執行Java的裝置怎么辦?如果為了安全性的理由只能讓服務器上的程序存取數據庫怎么辦?

 

我們知道,大多數情況下,方法的調用都是發生在相同堆上的兩個對象之間,如果要調用不同機器上的對象的方法呢?

通常,我們從某一臺計算機上面取得另一臺計算機上的信息是通過socket的輸入/輸出流,打開另一臺計算機的socket連接,然后取得outputStream來寫入數據.但如果要調用另一臺計算機上,另一個Java虛擬機上面的對象的方法你?我們當然可以自己定義和設計通信協議來調用,然后通過Socket把執行結果再傳回去,并且還能夠像是對本機的方法調用一樣,也就是說想要調用遠程的對象(像是別的堆上的),卻又要像是一般的調用.

這就是RMI帶給我們的功能.

 

遠程過程調用的設計

要創建出4種東西:服務器、客戶端、服務器輔助設施和客戶端輔助設施.

1.創建客戶端和服務端應用程序,服務器應用程序時個遠程服務,是個帶有客戶端會調用的方法的對象

2.創建客戶端和服務器端的輔助設施(helper)他們會處理所有客戶端和服務器的底層網絡輸入/輸出細節,讓客戶端和程序好像在處理本地調用一樣.

輔助設施的任務輔助設施是個在實際上執行通信的對象,他們會讓客戶端感覺上好像是在調用本機對象,客戶端對象看起來像是在調用遠程的方法,但實際上它只是在調用本地處理Socket和串流細節的代理.在服務器這端,服務器的輔助設施會通過socket連接來自客戶端設施的要求,解析打包送來的信息,然后調用真正的服務,因此對服務對象來說此調用來自本地.服務的輔助設施取得返回值之后就把它包裝然后送回去(通過socket的輸出串流)給客戶端的輔助設施.客戶端的輔助設施會解開這些信息傳輸給客戶端的對象

調用方法的過程

1.客戶端對象對輔助設施對象調用doBigThing()

2.客戶端輔助設施把調用信息打包通過網絡送到服務器的輔助設施

3.服務端的輔助設施解開來自客戶端輔助設施的信息,并以此調用真正的服務.

 

這個過程的描述圖如下:

Java RMI提供客戶端和服務器端的輔助設施對象

Java,RMI已經幫我們創建好客戶端和服務器端的輔助設施,它也知道如何讓客戶端輔助設施看起來像是真正的服務,也就是說,RMI知道如何提供相同的方法給客戶端調用.

此外,RMI有提供執行期所需全部的基礎設施,包括服務的查詢以及讓客戶端能夠找到與取得客戶端的輔助設施(真正的服務代理人).

使用RMI,無需編寫任何網絡或輸入/輸出的程序,客戶端對遠程方法的調用就跟對同一個Java虛擬機上的方法調用是一樣的.

一般調用和RMI調用有一點不同,雖然對客戶端來說,此方法調用看起來像是本地的,但是客戶端輔助設施會通過網絡發出調用,此調用最終還是會涉及到socket和串流,一開始是本機調用,代理會把它轉成遠程的.中間的信息是如何從Java虛擬機送到Java虛擬機要看輔助設施對象所用的協議而定.

使用RMI,必須要決定協議:JRMPIIOP,JRMPRMI原生的協議,它是為Java間的遠程調用而設計的,另外一方面,IIOP是為了CORBA而產生的,它讓我們能夠調用Java對象或其它類型的遠程方法,CORBA通常比RMI麻煩,因為若兩端不全都是Java的話,就會產生一堆可怕的轉譯和交談操作.

我們只關心JavaJava的操作,所以會使用相當簡易的RMI.

RMI,客戶端的輔助設施稱為stub,而服務器端的輔助設施稱為skeleton.

 

如何創建遠程服務

1.創建Remote接口

遠程的接口定義了客戶端可以遠程調用的方法,它是個作為服務的多態化類.stub和服務都會實現此接口

2.實現Remote接口

這個是真正執行的類,它實現出定義在該接口上的方法,它是客戶端會調用的對象

3.rmic產生stubskeleton

客戶端和服務器都有helper,我們無需創建這些類或產生這些類的源代碼,這都會在執行JDK所附的rmic工具時自動地處理掉

4.啟動RMI registry (rmiregistry)

rmiregistry就像電話薄,用戶會從此處取得代理(客戶端的stub/helper對象)

5.啟動遠程服務

必須讓服務對象開始執行,實現服務的類會起始服務的實例并向RMI Registry注冊,要有注冊后才能對用戶服務.

服務端代碼

定義接口

復制代碼 代碼如下:

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 *
 *    MyRemote.java
 *
 *     功   能: TODO
 *     類   名: MyRemote.java
 *
 *  ver    

主站蜘蛛池模板: 久久精品久久精品久久精品 | 一区二区精品视频在线观看 | 亚洲第一视频在线 | 中文字幕一二三区芒果 | 国产精品99久久久久久久 | 国产精品一品二区三区四区18 | 亚洲国产一区二区三区 | 黑人日比 | 日韩激情| 久久55| 露脸各种姿势啪啪的清纯美女 | 国产成人精品午夜 | 一区二区免费看 | japanesexxxxxxxhd | 91精品中文字幕 | 日本精品久久久久 | 久草在线资源福利站 | av成人免费观看 | 久久亚洲春色中文字幕久久 | 91婷婷射 | 亚洲精品一区国产精品丝瓜 | 国产毛毛片一区二区三区四区 | 国产一区精品在线观看 | 激情综合在线观看 | 国产视频在线观看一区二区三区 | 久久久久久亚洲综合影院红桃 | 成人毛片一区 | 午夜精品成人 | 蜜桃网站在线观看 | 黄色一级片免费观看 | 国产精品自拍99 | 国产人成免费爽爽爽视频 | 久久羞羞视频 | 91精品久久久久久久久久久 | 免费一级毛片在线播放不收费 | 欧美成人做爰高潮片免费视频 | 成人不卡在线观看 | 日日草夜夜 | 日产精品久久久一区二区福利 | 国产成人精品网站 | 毛片免费观看视频 |