亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rmi規范說明2.txt

?? 關于使用JAVA語言編寫RMI的各種規范的說明資料。
?? TXT
字號:
RMI規范--第二章 

Java 分布式對象模型 

2.1 分布式對象應用程序 
RMI 應用程序通常包括兩個獨立的程序:服務器程序和客戶機程序。典型的服務 
器應用程序將創建多個遠程對象,使這些遠程對象能夠被引用,然后等待客戶機 
調用那些遠程對象上的方法。而典型的客戶機程序則從服務器中得到一個或多個 
遠程對象的引用,然后調用遠程對象的方法。RMI 為服務器和客戶機進行通訊 
和信息傳遞提供了一種機制。這樣的應用程序有時被稱為分布式對象應用程序。 

分布式對象應用程序需要: 

定位遠程對象 
應用程序可使用兩種機制中的一種得到對遠程對象的引用。它既可用 RMI 的簡 
單命名工具 rmiregistry 來注冊它的遠程對象;也可將遠程對象引用作為常規 
操作的一部分來進行傳遞和返回。 
與遠程對象通訊 
遠程對象間通訊的細節由 RMI 處理;對于程序員來說,遠程通訊看起來就象標 
準的 Java 方法調用。給作為參數或返回值傳遞的對象加載類字節碼因為 RMI 
允許調用程序將純 Java 對象傳給遠程對象,所以 RMI 將提供必要的機制, 
既可以加載對象的代碼又可以傳輸對象的數據。 
服務器調用注冊服務程序以使名字與遠程對象相關聯。客戶機在服務器注冊服務 
程序中用遠程對象的名字查找該遠程對象,然后調用它的方法。RMI 能用 Java 
系統支持的任何 URL 協議(例如 HTTP、FTP、file 等)加載類字節碼。 


2.2 術語的定義 
在 Java 分布式對象模型中,remote object 是這樣一種對象:它的方法可以 
從其它 Java 虛擬機(可能在不同的主機上)中調用。該類型的對象由一種或 
多種 remote interfaces(它是聲明遠程對象方法的 Java 接口)描述。 
遠程方法調用 (RMI) 就是調用遠程對象上遠程接口的方法的動作。更為重要的 
是,遠程對象的方法調用與本地對象的方法調用語法相同。 


2.3 分布式和非分布式模型的比較 
Java 分布式對象模型在以下幾方面與 Java 對象模型相似: 

遠程對象的引用在任一種方法調用中(本地或遠程)都能以參數形式傳遞或以結 
果形式返回。 
遠程對象可以被強制轉換成任何遠程界面,只要該界面為使用內置 Java 語法 
進行強制類型轉換的實現所支持。 
內置 Java 操作符 instanceof 可用來測試遠程對象所支持的遠程接口。 
Java 分布式對象模型在以下幾方面與 Java 對象模型不同: 
遠程對象的客戶機與遠程接口發生交互,而從不與這些接口的實現類交互。 
遠程方法的非遠程參數和返回結果是通過復制而非引用的方式傳遞的。這是因為 
對象的引用只在單個虛擬機中才有用。 

遠程對象以引用的方式進行傳遞,而不是復制實際的遠程實現。 
某些 java.lang.Object 類定義的方法的語義專用于遠程對象。 
因為調用遠程對象的失敗模式本來就比調用本地對象的失敗模式復雜,所以客戶 
機必須處理遠程方法調用期間發生的額外異常。 

2.4 RMI 接口和類概述 
2.4.1 java.rmi.Remote 接口 
在 RMI 中,遠程接口是聲明了可從遠程 Java 虛擬機中調用的方法集。遠程接 
口必須滿足下列要求: 

遠程接口至少必須直接或間接擴展 java.rmi.Remote 接口。 
遠程接口中的方法聲明必須滿足下列遠程方法聲明的要求: 
遠程方法聲明在其 throws 子句中除了要包含與應用程序有關的異常(注意與 
應用程序有關的異常無需擴展 java.rmi.RemoteException )之外,還必須包 
括 java.rmi.RemoteException 異常(或它的超類,例如 
java.io.IOException 或 java.lang.Exception )。 
遠程方法聲明中,作為參數或返回值聲明的(在參數表中直接聲明或嵌入到參數 

的非遠程對象中)遠程對象必須聲明為遠程接口,而非該接口的實現類。 
java.rmi.Remote 接口是一個不定義方法的標記接口: 

public interface Remote 


遠程接口必須至少擴展 java.rmi.Remote 接口(或其它擴展 
java.rmi.Remote 的遠程接口)。然而,遠程接口在下列情況中可以擴展非遠 
程接口: 

遠程接口也可擴展其它非遠程接口,只要被擴展接口的所有方法(如果有)滿足 
遠程方法聲明的要求。 
例如,下面的接口 BankAccount 即為訪問銀行帳戶定義了一個遠程接口。它包 
含往帳戶存款、使帳戶收支平衡和從帳戶取款的遠程方法: 

public interface BankAccount extends java.rmi.Remote 
{ 
public void deposit(float amount) 
throws java.rmi.RemoteException; 
public void withdraw(float amount) 
throws OverdrawnException, java.rmi.RemoteException; 
public float getBalance() 
throws java.rmi.RemoteException; 
} 


下例說明了有效的遠程接口 Beta。它擴展非遠程接口 Alpha(有遠程方法)和 

接口 java.rmi.Remote: 

public interface Alpha 
{ 
public final String okay = "constants are okay too"; 
public Object foo(Object obj) 
throws java.rmi.RemoteException; 
public void bar() throws java.io.IOException; 
public int baz() throws java.lang.Exception; 
} 


public interface Beta extends Alpha, java.rmi.Remote { 
public void ping() throws java.rmi.RemoteException; 
} 

2.4.2 RemoteException 類 
java.rmi.RemoteException 類是在遠程方法調用期間由 RMI 運行時所拋出 
的異常的超類。為確保使用 RMI 系統的應用程序的健壯性,遠程接口中聲明的 
遠程方法在其 throws 子句中必須指定 java.rmi.RemoteException(或它的 
超類,例如 java.io.IOException 或 java.lang.Exception)。 

當遠程方法調用由于某種原因失敗時,將拋出 java.rmi.RemoteException 異 
常。遠程方法調用失敗的原因包括: 

通訊失敗(遠程服務器不可達或拒絕連接;連接被服務器關閉等。) 
參數或返回值傳輸或讀取時失敗 
協議錯誤 
RemoteException 類是一個已檢驗的異常(必須由遠程方法的調用程序處理并 
經編譯器檢驗的異常),而不是 RuntimeException。 

2.4.3 RemoteObject 類及其子類 
RMI 服務器函數由 java.rmi.server.RemoteObject 及其子類 
java.rmi.server.RemoteServer、java.rmi.server.UnicastRemoteObject 
和 java.rmi.activation.Activatable 提供。 

java.rmi.server.RemoteObject 為對遠程對象敏感的 java.lang.Object 
方法、hashCode、 equals 和 toString 提供實現。 
創建遠程對象并將其導出(使它們可為遠程客戶機利用)所需的方法由類 
UnicastRemoteObject 和 Activatable 提供。子類可以識別遠程引用的語義, 

例如服務器是簡單的遠程對象還是可激活的遠程對象(調用時將執行的遠程對象)。 
java.rmi.server.UnicastRemoteObject 類定義了單體(單路傳送)遠程對 
象,其引用只有在服務器進程活著時才有效。 
類 java.rmi.activation.Activatable 是抽象類,它定義的 activatable 
遠程對象在其遠程方法被調用時開始執行并在必要時自己關閉。 

2.5 實現遠程接口 
實現遠程接口的類的一般規則如下: 

該類通常擴展 java.rmi.server.UnicastRemoteObject,因而將繼承類 
java.rmi.server.RemoteObject 和java.rmi.server.RemoteServer 提供 
的遠程行為。 
該類能實現任意多的遠程接口。 
該類能擴展其它遠程實現類。 
該類能定義遠程接口中不出現的方法,但這些方法只能在本地使用而不能在遠程 

使用。 
例如,下面的類 BankAcctImpl 實現 BankAccount 遠程接口并擴展 
java.rmi.server.UnicastRemoteObject 類: 

package mypackage; 

import java.rmi.RemoteException; 
import java.rmi.server.UnicastRemoteObject; 

public class BankAccountImpl extends UnicastRemoteObject implements 
BankAccount 

{ 
private float balance = 0.0; 

public BankAccountImpl(float initialBalance) 
throws RemoteException 
{ 
balance = initialBalance; 
} 

public void deposit(float amount) throws RemoteException 
{ 
... 
} 

public void withdraw(float amount) throws OverdrawnException, 
RemoteException 
{ 
... 
} 

public float getBalance() throws RemoteException 
{ 
... 
} 
} 


注意:必要時,實現遠程接口的類能擴展除 
java.rmi.server.UnicastRemoteObject 類以外的其它一些類。但實現類此 
時必須承擔起一定的責任,即導出對象(由 UnicastRemoteObject 構造函數 
負責)和實現從 java.lang.Object 類繼承的 hashCode、 equals 和 
toString 方法的正確遠程語義(如果需要)。 


2.6 遠程方法調用中的參數傳遞 
傳給遠程對象的參數或源于它的返回值可以是任意可序列化的 Java 對象。這包 

括 Java 基本類型, 遠程?Java 對象和實現 java.io.Serializable 接口的 
非遠程 Java 對象。有關如何使類序列化的詳細信息,參見 Java“對象序列化 

規范”。本地得不到的作為參數或返回值的類,可通過 RMI 系統進行動態下載。 

有關 RMI 讀取參數、返回值和異常時如何下載參數和返回值類的詳細信息,參 

見“動態類加載”(3.4)一節。 

2.6.1 傳遞非遠程對象 
非遠程對象將作為遠程方法調用的參數傳遞或作為遠程方法調用的結果返回時, 
是通過復制傳遞的;也就是使用 Java 對象序列化機制將該對象序列化。 
因此,在遠程對象調用過程中,當非遠程對象作為參數或返回值傳遞時,非遠程 
對象的內容在調用遠程對象之前將被復制。 
從遠程方法調用返回非遠程對象時,將在調用的虛擬機中創建新對象。 

2.6.2 傳遞遠程對象 
當將遠程對象作為遠程方法調用的參數或返回值傳遞時,遠程對象的 stub 程序 
即被傳遞出去。作為參數傳遞的遠程對象僅能實現遠程接口。 

2.6.3 引用的完整性 
如果一個對象的兩個引用在單個遠程方法調用中以參數形式(或返回值形式)從 
一個虛擬機傳到另一個虛擬機中,并且它們在發送虛擬機中指向同一對象,則兩 
個引用在接收虛擬機中將指向該對象的同一副本。進一步說就是:在單個遠程方 
法調用中,RMI 系統將在作為調用參數或返回值傳遞的對象中保持引用的完整性 

2.6.4 類注解 
當對象在遠程調用中被從一個虛擬機發送到另一個虛擬機中時,RMI 系統在調用 
流中用類的信息 (URL) 給類描述符加注解,以便該類能在接收器上加載。在遠 
程方法調用期間,調用可隨時下載類。 

2.6.5 參數傳輸 
為將 RMI 調用的參數序列化到遠程調用的目的文件里,需要將該參數寫入作為 
java.io.ObjectOutputStream 類的子類的流中。ObjectOutputStream 子類 
將覆蓋 replaceObject 方法,目的是用其相應的 stub 類取代每個遠程對象。 
對象參數將通過 ObjectOutputStream 的 writeObject 方法寫入流中。而 
ObjectOutputStream 則通過 writeObject 方法為每個寫入流中的對象(包 
含所寫對象所引用的對象)調用 replaceObject 方法。RMIObjectOutputStream 
子類的 replaceObject 方法返回下列值: 
如果傳給 replaceObject 的對象是 java.rmi.Remote 的實例,則返回遠程對 
象的 stub 程序。遠程對象的 stub 程序通過對 
java.rmi.server.RemoteObject.toStub 
方法的調用而獲得。 
如果傳給 replaceObject 的對象不是 java.rmi.Remote 的實例,則只返回 
該對象。 
RMI 的 ObjectOutputStream 子類也實現 annotateClass 方法,該方法用類 
的位置注解調用流以便能在接收器中下載該類。有關如何使用 annotateClass 
的詳細信息,參見“動態類加載”一節。 
因為參數只寫入一個 ObjectOutputStream,所以指向調用程序同一對象的引用 
將在接收器那里指向該對象的同一副本。在接收器上,參數將被單個 
ObjectInputStream 所讀取。 

用于寫對象的 ObjectOutputStream(類似的還有用于讀對象的 
ObjectInputStream )的所有其它缺省行為將保留在參數傳遞中。例如,寫對 
象時對 writeReplace 的調用及讀對象時對 readResolve 的調用就是由 RMI 
的參數編組與解編流完成的。 

與上述 RMI 參數傳遞方式類似,返回值(或異常)將被寫入 
ObjectOutputStream 
的子類并和參數傳輸的替代行為相同。 


2.7 定位遠程對象 
我們專門提供了一種簡單的引導名字服務器,用于存儲對遠程對象的已命名引用 
。使用類 java.rmi.Naming 的基于 URL 的方法可以存儲遠程對象引用。 
客戶機要調用遠程對象的方法,則必須首先得到該對象的引用。對遠程對象的引 
用通常是在方法調用中以返回值的形式取得。RMI 系統提供一種簡單的引導名字 
服務器,通過它得到給定主機上的遠程對象。java.rmi.Naming 類提供基于統 
一資源定位符 (URL) 的方法,用來綁定、再綁定、解開和列出位于某一主機及 
端口上的名字-對象對。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品中文字幕一区二区三区| 97aⅴ精品视频一二三区| 国产女主播一区| 91在线免费播放| 国产一区二区三区免费播放| 五月天欧美精品| 亚洲精品乱码久久久久久黑人| 久久久亚洲欧洲日产国码αv| 欧美日韩一卡二卡| 日本福利一区二区| 91亚洲精品久久久蜜桃| 国产不卡免费视频| 成人性生交大片免费看在线播放| 激情综合一区二区三区| 久久国产婷婷国产香蕉| 视频一区二区中文字幕| 香蕉久久一区二区不卡无毒影院| 亚洲女同一区二区| 中文字幕一区二区三区蜜月| 国产精品久久久爽爽爽麻豆色哟哟 | 国产一区二区三区精品视频| 1024成人网| 中文字幕一区免费在线观看| 成人欧美一区二区三区小说| 国产三级欧美三级| 国产精品国产自产拍高清av| 中文字幕成人av| 一色屋精品亚洲香蕉网站| 国产精品天美传媒| 亚洲视频每日更新| 亚洲国产精品一区二区www| 玉足女爽爽91| 免费日韩伦理电影| 国产不卡视频一区| 成人av在线影院| 在线一区二区观看| 欧美一区二区三区在线| 欧美系列亚洲系列| 91精品午夜视频| 337p日本欧洲亚洲大胆精品 | 亚洲欧洲综合另类| 综合色天天鬼久久鬼色| 亚洲超碰97人人做人人爱| 奇米影视在线99精品| 黄色日韩网站视频| 97久久精品人人澡人人爽| 欧美美女一区二区| 国产亚洲一区二区三区| 亚洲视频在线观看三级| 日韩av高清在线观看| 国产电影精品久久禁18| 成人中文字幕在线| 欧美精品vⅰdeose4hd| 91精品国产综合久久久蜜臀图片 | 国产成都精品91一区二区三| 欧美午夜不卡在线观看免费| 亚洲国产精品黑人久久久| 免费观看日韩av| 91国在线观看| 亚洲欧洲日韩女同| 国产.欧美.日韩| 精品乱码亚洲一区二区不卡| 午夜日韩在线观看| 91麻豆国产自产在线观看| 国产精品美女久久久久久久久久久 | 国产精品系列在线播放| 日韩午夜精品视频| 亚洲国产视频a| 91蜜桃网址入口| 亚洲图片激情小说| 波多野结衣视频一区| 久久久精品2019中文字幕之3| 日本成人在线视频网站| 欧美一三区三区四区免费在线看 | 亚洲一线二线三线久久久| www.日韩大片| 国产精品日韩精品欧美在线| 成人开心网精品视频| 国产婷婷色一区二区三区四区| 国产一区二区电影| 国产亚洲精久久久久久| 国产麻豆精品95视频| 久久久久亚洲蜜桃| 国产美女av一区二区三区| 久久亚洲二区三区| 国产99久久久精品| 国产精品久久久久四虎| 91女神在线视频| 午夜精品福利久久久| 欧美电影一区二区| 精品一区二区在线视频| 精品国产网站在线观看| 国产精品18久久久久久久久 | 极品尤物av久久免费看| 久久―日本道色综合久久| 国产一区二区精品久久99| 欧美国产精品久久| 97se狠狠狠综合亚洲狠狠| 亚洲成人在线免费| 欧美www视频| 成人h动漫精品一区二| 一区二区三区在线观看国产| 欧美日韩另类一区| 精品亚洲成a人在线观看 | 欧美在线三级电影| 日韩精品一区第一页| 精品日韩av一区二区| 国产福利一区二区三区视频| 亚洲精品高清在线| 日韩免费高清视频| 成人av电影在线播放| 亚洲主播在线观看| 欧美精品一区二区三| 91在线视频播放| 美国毛片一区二区| 亚洲精品国久久99热| 精品美女被调教视频大全网站| 波多野结衣在线aⅴ中文字幕不卡| 亚洲午夜久久久久久久久电影院| 日韩精品一区二区在线观看| 成人激情免费网站| 精品一区二区免费看| 一区二区激情视频| 欧美激情一区不卡| 日韩欧美中文字幕精品| av网站一区二区三区| 久久av中文字幕片| 亚洲高清不卡在线观看| 欧美激情在线一区二区三区| 日韩一区二区在线免费观看| 成人国产视频在线观看| 男男视频亚洲欧美| 亚洲黄色免费电影| 欧美激情一区二区三区四区| 91麻豆精品国产无毒不卡在线观看 | 视频一区二区中文字幕| 亚洲色欲色欲www| 久久久不卡网国产精品一区| 欧美一二区视频| 欧美日韩日日骚| 欧美探花视频资源| 一本大道久久a久久综合| www.欧美日韩国产在线| 国产精品亚洲综合一区在线观看| 日韩电影在线看| 亚洲成人免费在线| 亚洲午夜在线观看视频在线| 国产精品剧情在线亚洲| 久久久久99精品国产片| 精品国产第一区二区三区观看体验| 欧美性极品少妇| 欧美无砖砖区免费| 色婷婷av一区二区三区软件| 97久久超碰国产精品| 色悠久久久久综合欧美99| 成人污视频在线观看| 成人午夜视频网站| 99久久精品国产观看| jlzzjlzz欧美大全| 色婷婷亚洲精品| 日本伦理一区二区| 欧美天天综合网| 欧美日韩中文精品| 91麻豆精品国产91久久久更新时间 | 91麻豆精品91久久久久同性| 欧美老人xxxx18| 日韩精品一区二区三区四区| 精品久久一二三区| 国产精品色呦呦| 亚洲男人的天堂网| 亚洲国产综合色| 青青草一区二区三区| 国产乱码精品一区二区三| 成人aa视频在线观看| 在线免费观看日本一区| 91精品国产综合久久国产大片| 久久影院午夜片一区| 亚洲女厕所小便bbb| 视频一区国产视频| 风流少妇一区二区| 欧美性猛片aaaaaaa做受| 精品欧美乱码久久久久久1区2区 | 欧美制服丝袜第一页| 日韩欧美亚洲国产另类| 国产精品美女久久久久久2018| 亚洲乱码国产乱码精品精98午夜 | 久久女同性恋中文字幕| 亚洲人123区| 精品在线观看免费| 91免费国产视频网站| 7777精品伊人久久久大香线蕉超级流畅 | 美女视频黄 久久| 不卡高清视频专区| 在线播放中文字幕一区| 欧美高清在线一区二区| 日日夜夜免费精品视频| 不卡一区二区在线| 日韩一级在线观看| 一区二区三区资源| 国产成人在线观看免费网站|