欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

在Java中實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用(轉(zhuǎn))

在Java中實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用(轉(zhuǎn))[@more@]一、Java中的遠(yuǎn)程方法調(diào)用

遠(yuǎn)程方法調(diào)用(Remote Method Invocation, RMI)是Java1.1引入的分布式對象軟件包,它的出現(xiàn)簡化了在多臺機(jī)器上的Java應(yīng)用之間的通信。相比CORBA,RMI功能較弱且只能用于Java系統(tǒng)。

二、實(shí)現(xiàn)一個簡單的RMI

要使用RMI,必須構(gòu)造四個主要的類:遠(yuǎn)程對象的本地接口、RMI客戶、遠(yuǎn)程對象實(shí)現(xiàn)和RMI服務(wù)器。RMI服務(wù)器生成遠(yuǎn)程對象實(shí)現(xiàn)的一個實(shí)例,并用一個特殊的URL注冊它,RMI客戶在遠(yuǎn)程服務(wù)器上查找對象,若找到就把它轉(zhuǎn)換成本地接口類型,然后像一個本地對象一樣使用它。下面是一個簡單的RMI例子,遠(yuǎn)程對象只返回一個消息字符串。要使這個例子更有價值,我們需要做的就是完善遠(yuǎn)程對象實(shí)現(xiàn)類。

1.遠(yuǎn)程對象的本地接口類(Rem.java)

該類僅僅是一個接口,而不是實(shí)現(xiàn),RMI客戶機(jī)可以直接使用它,RMI服務(wù)器必須通過一個遠(yuǎn)程對象來實(shí)現(xiàn)它,并用某個URL注冊它的一個實(shí)例。

import java.rmi.*;
public interface Rem extends Remote { public String getMessage() throws RemoteException;}


本地接口(Rem)必須是公共的,否則客戶機(jī)在加載一個實(shí)現(xiàn)該接口的遠(yuǎn)程對象時就會出錯。此外,它還必須從java.rmi.Remote繼承而來,接口中的每一個方法都必須拋出遠(yuǎn)程異常java.rmi.RemoteException。

2.RMI客戶類(RemClient.java)

RMI客戶使用Naming.lookup在指定的遠(yuǎn)程主機(jī)上查找對象,若找到就把它轉(zhuǎn)換成本地接口Rem類型,然后像一個本地對象一樣使用它。與CORBA不同之處在于RMI客戶必須知道提供遠(yuǎn)程服務(wù)主機(jī)的URL,這個URL可以通過rmi://host/path或rmi://host:port/path來指定,如果省略端口號,就使用1099。Naming.lookup可能產(chǎn)生三個異常:RemoteException、NotBoundException、MalformedURLException,三個尋常都需要捕獲。RemoteException、Naming和NotBoundException在java.rmi.*中定義,MalformedURLException在java.net.*中定義。另外,客戶機(jī)將向遠(yuǎn)程對象傳遞串行化對象Serializable,所以還應(yīng)在程序中輸入java.io.*。

import java.rmi.*;
import java.net.*;
import java.io.*;
public class RemClient {
public static void main(String[] args) {
try {
String host = (args.length > 0) ? args[0] : "localhost"; //從命令行讀取遠(yuǎn)程主機(jī)名
//通過URL在遠(yuǎn)程主機(jī)上查找對象,并把它轉(zhuǎn)化為本地接口Rem類型
Rem remObject=(Rem)Naming.lookup("rmi://" + host + "/Rem");
System.out.println(remObject.getMessage()); //調(diào)用遠(yuǎn)程對象的方法
} catch(RemoteException re) {System.out.println("RemoteException: " + re);
} catch(NotBoundException nbe) {System.out.println("NotBoundException: " + nbe);
} catch(MalformedURLException mfe){System.out.println("MalformedURLException:"+ mfe);
}}}
3.遠(yuǎn)程對象實(shí)現(xiàn)類(RemImpl.java)
這個類真正實(shí)現(xiàn)RMI客戶調(diào)用的遠(yuǎn)程對象,它必須從UnicastRemoteObject繼承,其構(gòu)造函數(shù)應(yīng)拋出RemoteException異常。
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class RemImpl extends UnicastRemoteObject implements Rem {
public RemImpl() throws RemoteException {} //構(gòu)造函數(shù)拋出RemoteException異常
public String getMessage() throws RemoteException {
return("Here is a remote message."); }} //向RMI客戶返回一個消息串 4.RMI服務(wù)器類(RemServer.java)該類創(chuàng)建遠(yuǎn)程對象實(shí)現(xiàn)RemImpl的一個實(shí)例,然后用一個特定的URL來注冊它,所謂注冊就是通過Naming.bind或Naming.rebind來將RemImpl實(shí)例綁定到URL上。 import java.rmi.*; import java.net.*; public class RemServer { public static void main(String[] args) { try { RemImpl localObject = new RemImpl(); //生成遠(yuǎn)程對象實(shí)現(xiàn)的一個實(shí)例 Naming.rebind("rmi:///Rem", localObject); //將遠(yuǎn)程對象實(shí)例綁定到rmi:///Rem上 }catch(RemoteException re){System.out.println("RemoteException:"+re); }catch(MalformedURLException mfe) {System.out.println("MalformedURLException: "+mfe); }}}

三、編譯和運(yùn)行

編譯RMI客戶和服務(wù)器,這將自動編譯遠(yuǎn)程對象的本地接口和遠(yuǎn)程對象實(shí)現(xiàn)
javac RemClient.java //自動編譯遠(yuǎn)程對象的本地接口Rem.java
javac RemServer.java //自動編譯遠(yuǎn)程對象實(shí)現(xiàn)RemImpl.java
生成客戶承接模塊和服務(wù)器框架
rmic RemImpl
這將構(gòu)造RemImpl_Stub.class和RemImpl_Skeleton.class。請將Rem.class、RemClient.class和RemImpl_Stub.class拷貝到RMI客戶機(jī),將Rem.class、RemImpl.class 、RemServer.class和RemImpl_Skeleton.class拷貝到RMI服務(wù)器。
啟動RMI注冊
rmiregistry
//在服務(wù)器上執(zhí)行。不論有多少個遠(yuǎn)程對象,本操作只需做一次
運(yùn)行java RemServer.class
//啟動RMI服務(wù)器(在服務(wù)器上執(zhí)行)
java RemClient.class
//啟動RMI客戶,將輸出“Here is a remote message.”

分享題目:在Java中實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用(轉(zhuǎn))
分享地址:http://www.aaarwkj.com/article4/isggoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作網(wǎng)站排名、電子商務(wù)、網(wǎng)站內(nèi)鏈面包屑導(dǎo)航、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
久久伊人这里都是精品| 国产情侣自拍视频在线观看| 日韩蜜桃av一二三四区| 国内外成人皇色视频| 天堂av好男人亚洲精品| 欧美在线观看日韩精品| 欧亚日韩精品一区二区在线| 国产成人精品视频午夜蜜蜂| 亚洲欧美日韩国产99| av天堂官网在线人妻| 亚洲精品在线播放av| 亚洲欧美日韩颜射极品| 久久亚洲精品中文字幕一| 亚洲国产综合亚洲综合国产| 欧美日本一道本一区二区三区| 超碰国产熟女一区二区三区 | 少妇高潮特黄在线观看| 日韩在线一区二区三区电影| 麻豆国产国语精品三级在线观看 | 四虎在线观看最新免费| 欧美高清视频看片在线观看| 久久精品亚洲欧美激情| 婷婷丁香六月激情综合| 国产精品神马午夜福利| 欧美视频免费一级黄片| 国产91在线视频播放| 日韩激情中文字幕一区二区三区| 亚洲中文字幕女同系列av专区| 国产日韩精品综合一区| 亚洲日本精品免费在线观看| 天堂网一区二区三区四区| 午夜日韩综合激情视频在线观看 | 大陆av剧情网站在线观看| 亚洲精品在线观看日韩欧美| 国产男女做爰在线视频| 国产亚洲欧美另类网爆| 欧美高清精品在线视频| 亚洲一区麻豆文化传媒| 亚洲黄色成人在线观看| 日韩欧美一区二区福利视频| 免费亚洲老熟熟女熟女熟女|