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

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

RMI在企業分布式計算中的應用

2019-11-18 12:41:51
字體:
來源:轉載
供稿:網友

  作為整個產品供給鏈中的一部分,現代企業的企業信息資源廣泛分布在各種網絡體系中,企業必須能夠處理這些分布的信息資源,這使得分布式企業應用成為構建企業信息環境的必然需求。RMI是使用最廣泛的分布式對象系統之一,本文舉例介紹了分布式企業計算的基本模式及如何應用RMI 來開發分布式的企業應用。
  
  一、客戶/服務端模式
  客戶/服務模式通過使用一個應用程序(客戶)和另一個程序(服務端)交換數據。在客戶/服務模式的應用中,通常使用低層次的Socket來開發,使用Socket來開發客戶/服務端模式意味著我們必須自己設計一種包含客戶端和服務端都統一的命令集的協議,使得客戶端和服務端能夠通過這個協議來通信。
  
  二、分布式對象模式
  分布式對象系統是一個對象集合,通過定義很完善的統一接口來分隔開請求服務(客戶端)和功能服務(服務端)。在分布式對象模式里,客戶端發送一個消息到一個對象,由對象解釋這個消息,然后決定應該由什么服務來完成,這個服務、方法或選擇可能是被一個對象或是被一個Broker來完成的。
  
  三、RMI
  RMI是一個分布式對象模式。由于不需要設計協議使得使用RMI開發分布式程序比使用socket更加輕易。在RMI里,設計者就象在調用一個本地類的方法一樣,而實際上是在調用的時候相應的參數被發送到遠端的對象后被解釋,最后結果返回給調用者,下面本文通過開發一個文件交換程序來介紹RMI的應用。這個應用答應客戶端從服務端交換(或下載)所有類型的文件。第一步是定義一個遠程的接口,這個接口指定的簽名方法將被服務端提供和被客戶端調用。
  1.定義一個遠程接口
  FileInterface.java代碼如下:
  import java.rmi.Remote;
  import java.rmi.RemoteException;
  public interface FileInterface extends Remote {
    public byte[] downloadFile(String fileName) throws
    RemoteException;
  }
  接口FileInterface提供了一個downloadFile方法,然后返回一個相應的文件數據。
  2.實現遠程的接口
  類FileImpl繼續于UnicastRemoteObject類。這顯示出FileImpl類是用來創建一個單獨的、不能復制的、遠程的對象,這個對象使用RMI默認的基于TCP的通信方式。FileImpl.java代碼如下:
  import java.io.*;
  import java.rmi.*;
  import java.rmi.server.UnicastRemoteObject;
  public class FileImpl extends UnicastRemoteObject
   implements FileInterface {
    PRivate String name;
    public FileImpl(String s) throws RemoteException{
     super();
     name = s;
    }
    public byte[] downloadFile(String fileName){
     try {
       File file = new File(fileName);
       byte buffer[] = new byte[(int)file.length()];
       BufferedInputStream input = new
     BufferedInputStream(new FileInputStream(fileName));
       input.read(buffer,0,buffer.length);
       input.close();
       return(buffer);
     } catch(Exception e){
     System.out.println("FileImpl: "+e.getMessage());
       e.printStackTrace();
       return(null);
     }}}
  3.編寫服務端
  (1)創建并安裝一個RMISecurityManager實例。
 ?。?)創建一個遠程對象的實例。
 ?。?)使用RMI注冊工具來注冊這個對象。
  FileServer.java 代碼如下:
  import java.io.*;
  import java.rmi.*;
  public class FileServer {
    public static void main(String argv[]) {
     if(System.getSecurityManager() == null) {
  System.setSecurityManager(new RMISecurityManager());
     }
     try {
       FileInterface fi = new FileImpl("FileServer");
       Naming.rebind("http://127.0.0.1/FileServer", fi);
     } catch(Exception e) {
       System.out.println("FileServer: "+e.getMessage());
       e.printStackTrace();
     }}}
  聲明Naming.rebind("http://127.0.0.1/FileServer", fi) 中假定了RMI注冊工具(RMI registry )使用并啟動了1099端口。假如在其他端口運行了RMI注冊工具,則必須在這個聲明中定義。例如,假如RMI注冊工具在4500端口運行,則聲明應為:
  Naming.rebind("http://127.0.0.1:4500/FileServer", fi)
  另外我們已經同時假定了我們的服務端和RMI注冊工具是運行在同一臺機器上的。否則需要修改rebind方法中的地址。
  4.編寫客戶端
  客戶端可以遠程調用遠程接口(FileInterface)中的任何一個方法。無論如何實現,客戶端必須先從RMI注冊工具中獲取一個遠程對象的引用。當引用獲得后,方法downloadFile被調用。在執行過程中,客戶端從命令行中獲得兩個參數,第一個是要下載的文件名,第二個是要下載的機器的地址,在對應地址的機器上運行服務端。FileClient.java 代碼如下:
  import java.io.*;
  import java.rmi.*;
  public class FileClient{
    public static void main(String argv[]) {
     if(argv.length != 2) {
      System.out.println("Usage: java FileClient fileName machineName");
      System.exit(0);
     }
     try {
       String name = "http://" + argv[1] + "/FileServer";
       FileInterface fi = (FileInterface) Naming.lookup(name);
       byte[] filedata = fi.downloadFile(argv[0]);
       File file = new File(argv[0]);
       BufferedOutputStream output = new
  BufferedOutputStream(new FileOutputStream(file.getName()));
       output.write(filedata,0,filedata.length);
       output.flush();
       output.close();
     } catch(Exception e) {
       System.err.println("FileServer exception: "+ e.getMessage());
       e.printStackTrace();
     }}}
  5.運行程序
  為了運行程序,我們必須使用rmic來編譯生成stubs和skeletons:prompt>rmic FileImpl。這將會生成FileImpl_Stub.class和FileImpl_Skel.class兩個文件。stub是客戶端的代理,而skeleton是服務端的框架。服務端和客戶端采用javac來編譯(假如服務端和客戶端在兩個不同的機器,則必須復制一個FileInterface接口)。
  使用rmiregistry或者start rmiregistry 命令來運行RMI注冊工具到window系統默認的端口上:
  prompt> rmiregistry portNumber
  RMI注冊工具運行之后,需要運行服務FileServer,因為RMI的安全機制將在服務端發生作用,所以必須增加一條安全策略:
  grant {
  permission java.security.AllPermission "", "";
  };
  為了運行服務端,需要有除客戶類(FileClient.
  class)之外所有的類文件。確認安全策略在policy.txt文件之后,使用如下命令來運行服務器。
  prompt> java -Djava.security.policy=policy.txt FileServer
  為了在其他的機器運行客戶端程序,需要一個遠程接口(FileInterface.class)和一個stub(FileImpl_Stub.class)。 使用如下命令運行客戶端:
  prompt> java FileClient fileName machineName
  這里fileName是要下載的文件名,machineName 是要下載的文件所在的機器(也是服務端所在的機器)。假如全部通過的話,當客戶端運行后,則這個文件將被下載到本地。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
正在播放国产一区| 国产精品日韩在线观看| 久久久久久成人精品| 欧美有码在线视频| 亚洲成人中文字幕| 亚洲黄页视频免费观看| 国产亚洲精品一区二555| 最近中文字幕2019免费| 久久色免费在线视频| 亚洲黄色免费三级| 亚洲成人a级网| 精品国产乱码久久久久久婷婷| 隔壁老王国产在线精品| 日韩精品久久久久| 一本大道香蕉久在线播放29| 在线视频日韩精品| 欧美国产日韩一区二区在线观看| 欧美成人一二三| 国产精品美女久久| 亚洲九九九在线观看| 中文字幕日韩高清| 亚洲自拍偷拍第一页| 亚洲国产一区二区三区在线观看| 国产+成+人+亚洲欧洲| 久久69精品久久久久久久电影好| 亚洲免费一级电影| 亚洲影院色无极综合| 欧美丝袜第一区| 欧美日韩国产激情| 成人黄色av网| 欧美另类第一页| 欧美日韩国产在线看| 中文字幕国内精品| 欧美精品www在线观看| 欧美性极品少妇精品网站| 国产成人亚洲综合91| 成人免费观看49www在线观看| 亚洲视频在线观看视频| 欧美高清激情视频| 亚洲精品少妇网址| 欧美视频二区36p| 亚洲人成网在线播放| 最近2019年日本中文免费字幕| 亚洲欧美国产精品专区久久| 91免费福利视频| 色综合老司机第九色激情| 精品久久久久久中文字幕一区奶水| 亚洲男人天堂2024| xxx成人少妇69| 中文字幕亚洲无线码在线一区| 在线观看国产欧美| 国产亚洲欧美日韩美女| 欧美国产日产韩国视频| 欧美一级大片视频| 亚洲综合在线做性| 国产有码一区二区| 色樱桃影院亚洲精品影院| 亚洲美女动态图120秒| 亚洲视屏在线播放| 懂色av中文一区二区三区天美| 91高清免费在线观看| 日韩中文在线观看| 亚洲男人第一av网站| 国产精品成人免费电影| 亚洲欧洲国产精品| 国产午夜精品免费一区二区三区| 91精品在线播放| 欧美高清视频一区二区| 91精品视频观看| 国产精品99免视看9| 国产免费成人av| 欧美日韩免费在线观看| 亚洲精品98久久久久久中文字幕| 影音先锋日韩有码| 精品高清美女精品国产区| 成人免费观看网址| 亚洲自拍高清视频网站| 欧美日韩精品在线| 亚洲天堂第一页| 国产精品亚洲片夜色在线| 日韩精品欧美国产精品忘忧草| 久久久在线免费观看| 中文字幕日韩av综合精品| 精品久久久国产| 欧美精品videos| 亚洲国产精品人人爽夜夜爽| 国产日韩欧美91| 精品日韩视频在线观看| 亚洲欧美国产一本综合首页| 亚洲无av在线中文字幕| 日韩欧美第一页| 日韩av影院在线观看| 91久久精品日日躁夜夜躁国产| 国产精品99久久久久久www| 国产精品日韩电影| 欧美高清理论片| 欧美性猛交xxxx免费看久久久| 欧美人与物videos| 91精品视频在线看| 欧美黄色成人网| 狠狠色狠狠色综合日日五| 最近中文字幕日韩精品| 91日本视频在线| 秋霞成人午夜鲁丝一区二区三区| 日韩电影在线观看永久视频免费网站| 久久久国产精彩视频美女艺术照福利| 欧美中文字幕在线观看| 久久综合免费视频影院| 欧美性猛交xxxx乱大交3| 青青草一区二区| 日韩av网站大全| 国产精品久久久久久久av电影| 成人在线小视频| 欧美xxxx14xxxxx性爽| 国产精品网红福利| 中文字幕日韩欧美在线| 国产成人极品视频| 国产精品视频地址| www.精品av.com| 国产综合福利在线| 人人做人人澡人人爽欧美| 欧美日韩亚洲天堂| 日韩在线观看高清| 欧美性猛交视频| 亚洲国产精品美女| 久久精品国产亚洲7777| 成人国产精品久久久久久亚洲| 欧美日韩xxx| 国产日韩精品一区二区| 亚洲日本中文字幕免费在线不卡| 国产精彩精品视频| 国产精品天天狠天天看| 日本精品久久久久影院| 91精品啪aⅴ在线观看国产| 热久久免费国产视频| 日韩在线观看免费高清| 97高清免费视频| 日本精品免费观看| 欧美成人午夜免费视在线看片| 中文字幕亚洲欧美在线| 欧美夫妻性生活xx| 亚洲欧洲在线看| 亚洲精品中文字| 欧美乱大交做爰xxxⅹ性3| 国产欧洲精品视频| 亚洲成avwww人| 久久久国产一区二区| 亚洲国产成人久久综合| 国产va免费精品高清在线| 懂色av一区二区三区| 91精品国产色综合久久不卡98口| 欧美日本精品在线| 国产成人精品一区二区| 亚洲一区二区三区香蕉| 亚洲成色777777在线观看影院| 国产精品极品在线| 亚洲天堂av综合网| 欧美专区在线视频| 91精品视频在线播放| 亚洲一区二区三区四区视频| 国产精品一区二区三区免费视频| 中文字幕亚洲一区| 亚洲淫片在线视频| 91精品久久久久|