国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

RMI遠(yuǎn)程方法調(diào)用講解教程

2019-11-18 11:26:36
字體:
供稿:網(wǎng)友

RMI遠(yuǎn)程方法調(diào)用講解教程

1、RMI概述

RMI(Remote Method Invocation)
RMI是分布式對象軟件包,它簡化了在多臺計算機上的java應(yīng)用之間的通信。
必須在jdk1.1以上
RMI用到的類
java.rmi.Remote
所有可以被遠(yuǎn)程調(diào)用的對象都必須實現(xiàn)該接口
java.rmi.server.UnicastRemoteObject
所有可以被遠(yuǎn)程調(diào)用的對象都必須擴展該類

什么是RMI

遠(yuǎn)程方法調(diào)用是一種計算機之間對象互相調(diào)用對方函數(shù),啟動對方進程的一種機制,
使用這種機制,某一臺計算機上的對象在調(diào)用另外一臺計算機上的方法時,使用的程
序語法規(guī)則和在本地機上對象間的方法調(diào)用的語法規(guī)則一樣。


優(yōu)點

這種機制給分布計算的系統(tǒng)設(shè)計、編程都帶來了極大的方便。
只要按照RMI規(guī)則設(shè)計程序,可以不必再過問在RMI之下的網(wǎng)絡(luò)細(xì)節(jié)了,如:TCP和Socket等等。
任意兩臺計算機之間的通訊完全由RMI負(fù)責(zé)。調(diào)用遠(yuǎn)程計算機上的對象就像本地對象一樣方便。

1、面向?qū)ο螅?br>
RMI可將完整的對象作為參數(shù)和返回值進行傳遞,而不僅僅是預(yù)定義的數(shù)據(jù)類型。
也就是說,可以將類似Java哈西表這樣的復(fù)雜類型作為一個參數(shù)進行傳遞。

2、可移動屬性:

RMI可將屬性從客戶機移動到服務(wù)器,或者從服務(wù)器移動到客戶機。

3、設(shè)計方式:

對象傳遞功能使您可以在分布式計算中充分利用面向?qū)ο蠹夹g(shù)的強大功能,如二層和三層結(jié)構(gòu)系統(tǒng)。
假如用戶能夠傳遞屬性,那么就可以在自己的解決方案中使用面向?qū)ο蟮脑O(shè)計方式。
所有面向?qū)ο蟮脑O(shè)計方式無不依靠不同的屬性來發(fā)揮功能,假如不能傳遞完整的對象——包括實現(xiàn)和類型
——就會失去設(shè)計方式上所提供的優(yōu)點。

4、安全性:

RMI使用Java內(nèi)置的安全機制保證下載執(zhí)行程序時用戶系統(tǒng)的安全。
RMI使用專門為保護系統(tǒng)免遭惡意小程序侵害而設(shè)計的安全治理程序。

5、便于編寫和使用

RMI使得Java遠(yuǎn)程服務(wù)程序和訪問這些服務(wù)程序的Java客戶程序的編寫工作變得輕松、簡單。
遠(yuǎn)程接口實際上就是Java接口。
為了實現(xiàn)RMI的功能必須創(chuàng)建遠(yuǎn)程對象任何可以被遠(yuǎn)程調(diào)用的對象必須實現(xiàn)遠(yuǎn)程接口。但遠(yuǎn)程
接口本身并不包含任何方法。因而需要創(chuàng)建一個新的接口來擴展遠(yuǎn)程接口。
新接口將包含所有可以遠(yuǎn)程調(diào)用的方法。遠(yuǎn)程對象必須實現(xiàn)這個新接口,由于新的接口擴展了
遠(yuǎn)程接口,實現(xiàn)了新接口,就滿足了遠(yuǎn)程對象對實現(xiàn)遠(yuǎn)程接口的要求,所實現(xiàn)的每個對象都將
作為遠(yuǎn)程對象引用。

創(chuàng)建遠(yuǎn)程方法調(diào)用的5個步驟:
1、定義一個遠(yuǎn)程接口的接口,該接口中的每一個方法必須聲明它將產(chǎn)生一個RemoteException異常。
2、定義一個實現(xiàn)該接口的類。
3、使用RMIC程序生成遠(yuǎn)程實現(xiàn)所需的殘根和框架。
4、創(chuàng)建一個客戶程序和服務(wù)器進行RMI調(diào)用。
5、啟動Registry并運行自己的遠(yuǎn)程服務(wù)器和客戶程序。

第一步、擴展遠(yuǎn)程接口
創(chuàng)建一個RMI程序首先要做的就是創(chuàng)建一個擴展遠(yuǎn)程接口的接口。在這個接口中可以添加任意希望能在
遠(yuǎn)程機器上調(diào)用的方法。

接口示例

import java.rmi.Remote;
import.java.rmi.RemoteException;
public interface RemoteInterface extends java.rmi.Remote
{
public String start(String msg) throws RemoteException;
}


在接口中定義了一個返回字符串的方法
本地接口(RemoteInterface)必須是公共的,否則客戶機在加載一個實現(xiàn)該接口的遠(yuǎn)程對象時就會出錯。
它必須從java.rmi.Remote繼續(xù)而來,接口中的每一個方法都必須拋出遠(yuǎn)程異常java.rmi.RemoteException。
拋出這個異常的原因
由于任何遠(yuǎn)程方法調(diào)用實際上要進行許多低級網(wǎng)絡(luò)操作,因此網(wǎng)絡(luò)錯誤可能在調(diào)用過程中隨時發(fā)生。
因此,所有的RMI操作都應(yīng)放到try-catch塊中。

第二步、定義一個實現(xiàn)該接口的類。
該類必須繼續(xù)UnicastRemoteObject類。
擴展java.rmi.server.UnicastRemoteObject
UnicastRemoteObject顧名思義,是讓客戶機與服務(wù)器對象實例建立一對一的連接。
擴展實現(xiàn)接口的類例程
服務(wù)器要害語句
Naming.rebind("/RMITest",rmiTest);
//名字和接口綁定

第三步、生成殘根和框架代碼
在RMI中,客戶機上生成的調(diào)動調(diào)用參數(shù)和反調(diào)動返回值的代碼稱為殘根。有的書上稱這部分代碼為“主干”。
服務(wù)器上生成的反調(diào)動調(diào)用參數(shù)和進行實際方法調(diào)用調(diào)動返回值的代碼稱為框架。
生成殘根和框架的工具
Rmic命令行工具(RMI Compiler)
格式:
Rmic classname


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 曲阳县| 林甸县| 环江| 科技| 姚安县| 陇川县| 廉江市| 北碚区| 泾川县| 海城市| 肥西县| 乐清市| 乡城县| 平阴县| 石狮市| 古交市| 旺苍县| 通道| 嘉祥县| 桂东县| 虎林市| 郧西县| 修武县| 敖汉旗| 垦利县| 蒙阴县| 纳雍县| 始兴县| 保山市| 天门市| 石狮市| 连山| 剑川县| 龙南县| 盐山县| 安岳县| 黔南| 玛多县| 婺源县| 鸡东县| 南昌市|