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

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

RMI 起步

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

  在文章的開始,我先說明一下這個文章的來歷和翻譯它的初衷。一開始學習程序設計我就喜歡從具體的程序學起,從最初的HelloWorld,然后根據程序分析具體的語法,學習具體的語法,學習編程就是一個不斷的循環,但是最根本的就是寫程序,而不是一個勁的啃書,從寫程序瀆程序中去體驗語法,去體驗一次一次的成功,剛開始接觸RMI的時候,很多參考書都是講很多很多原理,基礎,但是就是沒有一個簡單的可實現的系統提供給我們,看了那么多還不知道怎么做,這也是現在很多程序設計書的通病。后來在sun公司網站上找到了一個RMI教程,上邊就提供了具體的方法構建一個簡單的RMI系統,看到這個我感到非常興奮,我希望能夠和大家一起分享這個,讓剛開始接觸RMI和想學RMI的人能夠從中得到一點收獲,于是就翻譯了這個,這里沒有全部翻譯,只是翻譯了實現這個系統的具體步驟。
  RMI,遠程方法調用(Remote Method Invocation)是EnterPRise javaBeans的支柱,是建立分布式Java應用程序的方便途徑。RMI是非常輕易使用的,但是它非常的強大。
  
     RMI的基礎是接口,RMI構架基于一個重要的原理:定義接口和定義接口的具體實現是分開的。下面我們通過具體的例子,建立一個簡單的遠程計算服務和使用它的客戶程序
  
  一個正常工作的RMI系統由下面幾個部分組成:
  ●   遠程服務的接口定義
  ●   遠程服務接口的具體實現
  ●   樁(Stub)和框架(Skeleton)文件
  ●   一個運行遠程服務的服務器
  ●   一個RMI命名服務,它答應客戶端去發現這個遠程服務
  ●   類文件的提供者(一個HTTP或者FTP服務器)
  ●   一個需要這個遠程服務的客戶端程序
  
  下面我們一步一步建立一個簡單的RMI系統。首先在你的機器里建立一個新的文件夾,以便放置我們創建的文件,為了簡單起見,我們只使用一個文件夾存放客戶端和服務端代碼,并且在同一個目錄下運行服務端和客戶端。
  
  假如所有的RMI文件都已經設計好了,那么你需要下面的幾個步驟去生成你的系統:
  
  1、 編寫并且編譯接口的Java代碼
  2、 編寫并且編譯接口實現的Java代碼
  3、 從接口實現類中生成樁(Stub)和框架(Skeleton)類文件
  4、 編寫遠程服務的主運行程序
  5、 編寫RMI的客戶端程序
  6、 安裝并且運行RMI系統
  
  1、 接口
  第一步就是建立和編譯服務接口的Java代碼。這個接口定義了所有的提供遠程服務的功能,下面是源程序:
  
  //Calculator.java
  //define the interface
  import java.rmi.Remote;
  
  public interface Calculator extends Remote
  {
    public long add(long a, long b)
      throws java.rmi.RemoteException;
  
    public long sub(long a, long b)
      throws java.rmi.RemoteException;
  
    public long mul(long a, long b)
      throws java.rmi.RemoteException;
  
    public long div(long a, long b)
      throws java.rmi.RemoteException;
  }
  注重,這個接口繼續自Remote,每一個定義的方法都必須拋出一個RemoteException異常對象。
  
  建立這個文件,把它存放在剛才的目錄下,并且編譯。
  
  >javac Calculator.java
  
  2、 接口的具體實現
  下一步,我們就要寫遠程服務的具體實現,這是一個CalculatorImpl類文件:
  
  //CalculatorImpl.java
  //Implementation
  import java.rmi.server.UnicastRemoteObject
  
  public class CalculatorImpl extends UnicastRemoteObject implements Calculator
  {
  
    // 這個實現必須有一個顯式的構造函數,并且要拋出一個RemoteException異常
    public CalculatorImpl()
      throws java.rmi.RemoteException {
      super();
    }
  
    public long add(long a, long b)
      throws java.rmi.RemoteException {
      return a + b;
    }
  
    public long sub(long a, long b)
      throws java.rmi.RemoteException {
      return a - b;
    }
  
    public long mul(long a, long b)
      throws java.rmi.RemoteException {
      return a * b;
    }
  
    public long div(long a, long b)
      throws java.rmi.RemoteException {
      return a / b;
    }
  }
     同樣的,把這個文件保存在你的目錄里然后編譯他。
  
     這個實現類使用了UnicastRemoteObject去聯接RMI系統。在我們的例子中,我們是直接的從UnicastRemoteObject這個類上繼續的,事實上并不一定要這樣做,假如一個類不是從UnicastRmeoteObject上繼續,那必須使用它的eXPortObject()方法去聯接到RMI。
  
     假如一個類繼續自UnicastRemoteObject,那么它必須提供一個構造函數并且聲明拋出一個RemoteException對象。當這個構造函數調用了super(),它久激活UnicastRemoteObject中的代碼完成RMI的連接和遠程對象的初始化。
  
  
  3、 樁(Stubs)和框架(Skeletons)
  下一步就是要使用RMI編譯器rmic來生成樁和框架文件,這個編譯運行在遠程服務實現類文件上。
  
  >rmic CalculatorImpl
  
  在你的目錄下運行上面的命令,成功執行完上面的命令你可以發現一個Calculator_stub.class文件,假如你是使用的Java2SDK,那么你還可以發現Calculator_Skel.class文件。
  
  
  4、 主機服務器
  遠程RMI服務必須是在一個服務器中運行的。CalculatorServer類是一個非常簡單的服務器。
  
  //CalculatorServer.java
  import java.rmi.Naming;
  
  public class CalculatorServer {
  
   public CalculatorServer() {
    try {
     Calculator c = new CalculatorImpl();
     Naming.rebind("rmi://localhost:1099/CalculatorService", c);
    } catch (Exception e) {
     System.out.println("Trouble: " + e);
    }
   }
  
   public static void main(String args[]) {
    new CalculatorServer();
   }
  }
     建立這個服務器程序,然后保存到你的目錄下,并且編譯它。
  
  5、 客戶端
  客戶端源代碼如下:
  
  //CalculatorClient.java
  
  
  import java.rmi.Naming;
  import java.rmi.RemoteException;
  import java.net.MalformedURLException;
  import java.rmi.NotBoundException;
  
  public class CalculatorClient {
  
    public static void main(String[] args) {
      try {
        Calculator c = (Calculator)
               Naming.lookup(
          "rmi://localhost
              /CalculatorService");
        System.out.println( c.sub(4, 3) );
        System.out.println( c.add(4, 5) );
        System.out.println( c.mul(3, 6) );
        System.out.println( c.div(9, 3) );
      }
      catch (MalformedURLException murle) {
        System.out.println();
        System.out.println(
         "MalformedURLException");
        System.out.println(murle);
      }
      catch (RemoteException re) {
        System.out.println();
        System.out.println(
              "RemoteException");
        System.out.println(re);
      }
      catch (NotBoundException nbe) {
        System.out.println();
        System.out.println(
             "NotBoundException");
        System.out.println(nbe);
      }
      catch (
        java.lang.ArithmeticException
                     ae) {
        System.out.println();
        System.out.println(
        "java.lang.ArithmeticException");
        System.out.println(ae);
      }
    }
  }
     保存這個客戶端程序到你的目錄下(注重這個目錄是一開始建立那個,所有的我們的文件都在那個目錄下),并且編譯他。
  
  6、 運行RMI系統
  現在我們建立了所有運行這個簡單RMI系統所需的文件,現在我們終于可以運行這個RMI系統啦!來享受吧。
  
  我們是在命令控制臺下運行這個系統的,你必須開啟三個控制臺窗口,一個運行服務器,一個運行客戶端,還有一個運行RMIRegistry。
  
  首先運行注冊程序RMIRegi

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品久久久久久| 中文字幕精品影院| 欧美激情性做爰免费视频| 日韩欧美在线视频| 在线观看国产成人av片| 亚洲欧美三级在线| 91国自产精品中文字幕亚洲| 色诱女教师一区二区三区| 亚洲日韩中文字幕在线播放| 成人久久久久爱| 亚洲男人天堂2023| 狠狠躁夜夜躁人人爽超碰91| 精品亚洲一区二区| 青青a在线精品免费观看| 青青草原一区二区| 在线观看亚洲区| 久久精品影视伊人网| 91精品久久久久久久久久久| 疯狂做受xxxx欧美肥白少妇| 国产精品男人爽免费视频1| 亚洲老头同性xxxxx| 久久人人爽人人爽人人片av高请| 亚洲欧美制服第一页| 欧美一区二区三区……| 久久久国产视频91| 欧美极品少妇xxxxⅹ喷水| 91精品国产精品| 91在线免费看网站| 日韩精品高清在线观看| 精品无人国产偷自产在线| 狠狠躁夜夜躁人人爽天天天天97| 久久亚洲精品小早川怜子66| 国产噜噜噜噜噜久久久久久久久| 亚洲精品久久久久久久久久久| 国产精品观看在线亚洲人成网| 欧洲午夜精品久久久| 日本国产欧美一区二区三区| 国产午夜精品全部视频在线播放| 久久久免费观看| 日韩成人av一区| 国产精品免费视频久久久| 不用播放器成人网| 性亚洲最疯狂xxxx高清| 国产精品精品久久久久久| 日韩视频亚洲视频| 色婷婷综合成人| 91国产精品电影| 久久久久久久久久久亚洲| 国产日本欧美一区二区三区| 91人人爽人人爽人人精88v| 久久精品99久久香蕉国产色戒| 中文字幕日韩精品在线观看| 国产精品美女久久久久久免费| 日韩免费观看av| 国产日韩欧美电影在线观看| 4438全国亚洲精品在线观看视频| 欧美成人第一页| 久久99久国产精品黄毛片入口| 久久这里只有精品99| 米奇精品一区二区三区在线观看| 久久九九有精品国产23| 亚洲视频在线观看网站| 亚洲变态欧美另类捆绑| 久久久久中文字幕| 亚洲美女av网站| 精品日本美女福利在线观看| 欧美在线视频播放| 久久国产精品免费视频| 亚洲精品自拍第一页| 俺去亚洲欧洲欧美日韩| 91精品久久久久久久久久另类| 国产亚洲欧洲在线| 一本大道亚洲视频| 久久久精品国产一区二区| 欧美日韩性生活视频| 伊人激情综合网| 午夜精品久久久久久久99热| 欧美影院在线播放| 777午夜精品福利在线观看| 国产午夜一区二区| 国产精品伦子伦免费视频| 欧美激情免费在线| 日本久久久久亚洲中字幕| 国产成人在线一区二区| 伊人久久五月天| 日本欧美中文字幕| 2019亚洲男人天堂| 欧美激情精品久久久久久久变态| 4438全国亚洲精品在线观看视频| 欧美综合在线观看| 美女撒尿一区二区三区| 久久伊人色综合| 欧美激情精品久久久久久蜜臀| 北条麻妃一区二区三区中文字幕| 国产精品扒开腿做爽爽爽男男| 国产美女精品视频免费观看| 亚洲91精品在线| 欧美色视频日本版| 亚洲图片欧美午夜| 91午夜理伦私人影院| 亚洲欧洲黄色网| 欧美激情xxxxx| 日韩精品在线视频美女| 日韩精品在线免费观看视频| 久久久免费观看视频| 亚洲另类图片色| 欧美高清不卡在线| 欧美色xxxx| 久久久女人电视剧免费播放下载| 麻豆国产精品va在线观看不卡| 欧美一乱一性一交一视频| 亚洲成人在线网| 欧美性高潮在线| 久久精品91久久久久久再现| 欧美日韩亚洲视频一区| 亚洲成人激情小说| 日韩精品极品在线观看播放免费视频| 97精品久久久中文字幕免费| 中文字幕久久精品| 亚洲性生活视频| 国产精品 欧美在线| 日本一区二区不卡| 国产精品久久久久久久一区探花| 久久欧美在线电影| 欧美激情国产高清| 一本色道久久综合狠狠躁篇怎么玩| 色综合色综合久久综合频道88| 欧美大片免费看| 亚洲国产精品嫩草影院久久| 午夜欧美不卡精品aaaaa| 亚洲xxxx视频| 57pao国产精品一区| 亚洲综合自拍一区| 狠狠色狠色综合曰曰| 国产精品女人网站| 中文字幕日韩视频| 国内精品视频一区| 自拍偷拍亚洲一区| 国产91精品视频在线观看| 亚洲女成人图区| 亚洲人a成www在线影院| 色综合久久88色综合天天看泰| 亚洲精品成人久久久| 亚洲三级 欧美三级| 免费不卡在线观看av| 亚洲欧美日韩精品| 91亚洲午夜在线| 欧美国产视频日韩| 91精品免费久久久久久久久| 粗暴蹂躏中文一区二区三区| 国产精品日韩欧美大师| 欧美精品电影免费在线观看| 国产精品视频最多的网站| 中文字幕免费精品一区高清| 成人久久精品视频| 精品久久国产精品| 欧美激情二区三区| 4388成人网| 久久久久久久久久久久久久久久久久av| 亚洲专区在线视频| 久久国产精品视频| 亚洲精品ady| 国产精品高清在线观看| 97国产精品免费视频|