亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用RMI進行分布式交互

2019-11-14 14:53:13
字體:
來源:轉載
供稿:網友

內容概要

  • RMI 示例
  • RMI 架構
  • RMI API
  1. Remote    
  2. RemoteException
  3. Registry, LocateRegistry
  4. Naming

 

 

RMI 示例

 在了解RMI之前,先來看一個例子:

// 服務接口package com.fjn.java.rmi.quickstart.server;import java.rmi.Remote;import java.rmi.RemoteException;public interface Hello extends Remote{    public String sayHello(String str) throws RemoteException;}// 服務實現package com.fjn.java.rmi.quickstart.server;import java.io.Serializable;import java.rmi.RemoteException;public class HelloImpl implements Hello, Serializable {    PRotected HelloImpl() throws RemoteException {       super();    }    private static final long serialVersionUID = 3556503295294925414L;    @Override    public String sayHello(String str) {       return "Hello, "+str;    }} // Server端發布服務:package com.fjn.java.rmi.quickstart.server;import java.net.MalformedURLException;import java.rmi.AlreadyBoundException;import java.rmi.NotBoundException;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;import java.rmi.server.UnicastRemoteObject; public class ServerTest {    public static void main(String[] args) throws RemoteException, AlreadyBoundException, InterruptedException, MalformedURLException, NotBoundException {       // 創建Registry       Registry registry=LocateRegistry.createRegistry(9998);            Hello stub=(Hello) UnicastRemoteObject.exportObject(new HelloImpl(),0);       // 將ref綁定到registry中       registry.rebind("Hello", stub);       Hello stub2=(Hello)registry.lookup("Hello");       System.out.println(stub2);       Thread.sleep(1000*60*60);    }}

執行結果:

Hello, zhang sanHello, Zhang san

 

RMI 架構

 

       上面的這個圖表示了RMI的架構圖,設計說明:Server端只需向一個登記處(Registry)為一個遠程對象注冊名字(唯一),然后就可以等待客戶端來使用了??蛻舳艘{用一個遠程方法前,先去登記處(Registry)look up(根據name),找到相應的對象(找到的是對象的引用),然后在客戶端進行方法調用。因為客戶端拿到的是遠程對象的引用,所以就像是直接調用一樣。

        在有些情況下,客戶端會從服務端取一此Class的bytecode,服務端同樣也會從客戶端取一些類的bytecode。這樣做的前提是,對方那里有Web Server。獲取時使用都是URL協議:URL protocol (e.g., HTTP, FTP, file, etc.) 。

 

RMI API

Remote

The Remote interface serves to identify interfaces whose methods may be invoked from a non-local virtual machine. Any object that is a remote object must directly or indirectly implement this interface. Only those methods specified in a "remote interface", an interface that extends java.rmi.Remote are available remotely.

       在這個接口中,沒有任何方法。這個接口只是一個標記作用,標記那些可以在非本地使用的接口。也就是說,如果這個接口可以被RMI客戶端使用,就必須extends這個接口,或者Remote的子接口。

 將實現了Remote接口的對象稱為遠程對象。RMI用于分布式程序,因此也將遠程對象稱為分布式對象。

 

遠程接口的設計原則

1)必須繼承Remote接口

2)在遠程接口中聲明的方法必須滿足下列要求:

       A:方法必須拋出java.rmi.RemoteException(IOException,Exception也可以,因為這兩個異常是RemoteException的父類)。

       B:遠程方法的聲明中:如果遠程對象出現參數或者返回值中,那么得使用遠程接口本身。

3)遠程接口如果也繼承了其他的非遠程接口,只要遠程方法滿足2)中的要求即可。作為遠程接口本身,要繼承Remote接口,在這個遠程接口中直接聲明的方法要滿足2)中的要求。從非遠程接口中繼承來的方法也得滿足2)中的要求。

4)接口的實現,必須實現Serializable接口。

 

RemoteException

       為了保證遠程調用時,程序的正常進行,需要對每一個遠程方法都拋出RemoteException,或者它的父類:IOException、Exception。

 

何時會拋出RemoteException?

1)  協議錯誤時

2)  通信失敗時(Server拒絕請求,或者沒有連接成功)

3)  參數或者接口在marshall、unmarshall過程中出現問題

 

Registry、LocateRegistry

 

在前面已經知道Registry是一個登記處。用于登記提供的遠程服務的。

Registry類提供了一些存儲、獲取遠程對象(在存儲時,遠程對象的引用會與一個name綁定,name是唯一的,所以獲取時可以根據name來獲?。?。

 

提供了下列方法:

 

 bind、unbind、rebind 用于將遠程對象與指定的name進行綁定和解綁。

list:用于列出已綁定的遠程對象的name。返回結果是數組。

另外有一點很重要,在Registry中存儲的是stub對象。而正在的對象是在RMI Server上。

當客戶端通過Naming或者Registry查找(loopup)到的都是對象的stub。然后利用Stub的序列化與反序列化功能進行Client與Server端通信。

 

LocateRegistry與Registry的關系

LocateRegistry是用于定位Registry在網絡上的位置的,知道Registry在網絡上的位置,就能取得Registry對象,根據Registry對象就可以找到要使用的遠程對象,找到遠程對象就可以去調用遠程方法了。

 

Naming

 

Naming類提供了一些存儲和獲取遠程對象(存儲在Registry中的)的引用的方法。

提供的方法有:

 

 

提供的方法中,都有一個name參數,是字符串類型的。它是有一個標準的格式(是一個URL,但是少了URL中的schema部分,schema是rmi)。格式為:

//host:port/name 或者 rmi://host:port/name

 

Host就是定位到的Registry的host,端口也是。

從提供的方法上來看,Naming就是一個工具類,它提供的方法都是靜態的,但是方法確實和Registry中的方法是一樣的。如此,目前就學習了兩種獲取、綁定遠程對象的方法了。

也就是說Registry在客戶端和服務端都是可用的。綁定用于服務端,獲取用于客戶端。

 

方式一:使用Registry綁定或者獲取一個遠程對象的stub。方式二:直接使用Naming來綁定或者獲取一個遠程對象的stub。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲免费影视第一页| 91精品国产91久久久久久吃药| 欧美精品激情视频| 高跟丝袜欧美一区| 国产精品视频公开费视频| 色婷婷综合成人| 亚洲成人久久久| 国产97在线播放| 日韩免费高清在线观看| 国产精品丝袜一区二区三区| 日韩av免费一区| 国内精品久久影院| 欧美日韩国产在线| 国产丝袜一区二区三区免费视频| 成人做爽爽免费视频| 欧美精品制服第一页| 久久99精品久久久久久青青91| 欧美日韩国产色视频| 日韩精品在线免费播放| 成人精品一区二区三区电影黑人| 97久久精品人人澡人人爽缅北| 欧美孕妇毛茸茸xxxx| 日韩电影免费观看中文字幕| 亚洲国产免费av| 国产69久久精品成人| 色yeye香蕉凹凸一区二区av| 91av在线播放| 国产91精品久久久久| 亚洲电影av在线| 欧美日韩高清在线观看| 性欧美激情精品| 国产suv精品一区二区| 国产伦精品一区二区三区精品视频| 欧美日韩中文字幕| 亚洲qvod图片区电影| 在线电影av不卡网址| 亚洲色图第三页| 日韩在线视频播放| 成人乱人伦精品视频在线观看| 2024亚洲男人天堂| 久久九九全国免费精品观看| 国产精品久久久久久久天堂| 国产精品va在线| 国产精品日韩专区| 国产成人精品免高潮费视频| 热re91久久精品国99热蜜臀| 激情久久av一区av二区av三区| 久久久久久久久久久网站| 国产精品福利片| 夜夜狂射影院欧美极品| 国产精品久久久久久久久借妻| 91亚洲午夜在线| 日韩欧美中文第一页| 中文字幕自拍vr一区二区三区| 成人免费看黄网站| 在线观看久久av| 97超碰蝌蚪网人人做人人爽| 欧美视频在线看| 日韩在线视频免费观看高清中文| 欧美日韩中国免费专区在线看| 91中文精品字幕在线视频| 日韩欧美成人免费视频| 久久综合伊人77777蜜臀| 久久这里有精品| 国产精品福利观看| 日韩网站在线观看| 久久精品91久久久久久再现| 国产成人免费av电影| 亚洲精品日韩激情在线电影| 98精品国产高清在线xxxx天堂| 成人网中文字幕| 美女性感视频久久久| 日韩精品极品视频| 亚洲午夜色婷婷在线| 欧美日韩午夜激情| 日本久久亚洲电影| 国产精品美女av| 91精品国产综合久久久久久久久| 欧美日韩aaaa| 91精品久久久久久久久久| 亚洲国产成人精品久久| 亚洲精品色婷婷福利天堂| 色偷偷91综合久久噜噜| 国产色婷婷国产综合在线理论片a| 亚洲成人激情在线| 黄色成人av在线| 精品日韩中文字幕| 亚洲精品视频久久| 日韩高清中文字幕| 精品久久久久久久久久| 国产成一区二区| 国产成人欧美在线观看| 欧美性猛交xxxx乱大交3| 亚洲精品97久久| 亚洲图片制服诱惑| 国产精品h在线观看| 亚洲色图17p| 成人黄色av网| 亚洲精品永久免费| 国产aⅴ夜夜欢一区二区三区| 日韩av不卡在线| 久久久爽爽爽美女图片| 欧美小视频在线观看| 日韩中文字幕免费视频| 日韩一区在线视频| 国产精品免费福利| 欧美精品一区三区| 热久久这里只有| 精品国产一区二区三区在线观看| 欧美日韩福利电影| 国产自产女人91一区在线观看| 庆余年2免费日韩剧观看大牛| 久久久视频免费观看| 亚洲天堂av在线免费观看| 精品国内产的精品视频在线观看| 欧美亚洲在线视频| 播播国产欧美激情| 日韩国产一区三区| 欧亚精品中文字幕| 国产精品电影久久久久电影网| 久久久噜久噜久久综合| 欧美电影免费在线观看| 精品在线小视频| 欧美成人精品激情在线观看| 国产日韩欧美91| 亚洲风情亚aⅴ在线发布| 亚洲视频在线观看| 亚洲免费中文字幕| 国产亚洲精品成人av久久ww| 热久久视久久精品18亚洲精品| 黑人狂躁日本妞一区二区三区| 国产精品女人久久久久久| 96sao精品视频在线观看| 亚洲成人网在线| 欧美成人中文字幕在线| 91极品女神在线| 国产久一一精品| 精品亚洲精品福利线在观看| 久久深夜福利免费观看| 亚洲最大福利视频| 欧美中文在线字幕| 国产国产精品人在线视| www.日韩.com| 米奇精品一区二区三区在线观看| 狠狠干狠狠久久| 午夜精品久久久久久久白皮肤| 国产亚洲精品美女| 亚洲理论电影网| 久久天天躁狠狠躁夜夜爽蜜月| 成人欧美在线观看| 456亚洲影院| 国产一区二区三区在线看| 中国日韩欧美久久久久久久久| 日韩精品视频在线观看免费| 全球成人中文在线| 欧美激情视频一区二区三区不卡| 91日本视频在线| 亚洲二区在线播放视频| www国产亚洲精品久久网站| 上原亚衣av一区二区三区| 日韩欧美aⅴ综合网站发布| 久久乐国产精品| 在线免费看av不卡| 精品久久久久久中文字幕一区奶水|