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

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

RMI與CORBA在Java中的應用

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

  本篇用實例來說明采用java進行RMI遠程方法調用及CORBA服務調用的實現方法,并分析它們的異同,從而為分布應用軟件的開發者提供參考和幫助。
  Internet/Intranet的飛速發展使得Web應用日益廣泛而復雜,Web早已不僅僅是超媒體信息的瀏覽工具,它正逐步發展成為分布異構環境中企業應用的通用前端和事務處理的展現窗口。在分布式環境異構中,各種機器所采用的操作系統、網絡通信協議和應用軟件千差萬別,要實現信息共享和軟件資源的整合十分困難,然而一個健壯的分布式計算框架能為可移植的分布式應用軟件開發帶來巨大的便利和好處。
  分布式對象技術主要是在分布式異構環境下建立應用系統框架和對象構件。在應用系統框架的支撐下,開發者可以將軟件功能封裝為更易治理和使用的對象,這些對象可以跨越不同的軟、硬件平臺進行互操作。目前,分布式互操作標準主要有Microsoft的COM/DCOM標準、Sun公司的Java RMI標準和OMG組織的CORBA標準。
  Java RMI調用實例
  Java RMI簡介
  遠程方法調用(RMI,Remote Method Invocation)是jdk1.1中引入的分布式對象軟件包,它的出現大大簡化了分布異構環境中Java應用之間的通信。
  
  要使用RMI,必須構建四個主要的類:遠程對象的本地接口、遠程對象實現、RMI客戶機和RMI服務器。RMI服務器生成遠程對象實現的一個實例,并用一個專有的URL注冊。RMI客戶機在遠程RMI服務器上查找服務對象,并將它轉換成本地接口類型,然后像對待一個本地對象一樣使用它。
  
  下面是一個簡單的RMI實例,RMI客戶機通過RMI服務器提供的方法實現對兩個雙精度浮點數的加減運算。例子雖然很簡單,但把握了Java RMI調用的基本原理和方法,在實現復雜應用時,我們需要做的也只是完善遠程對象的實現類而已。
  
  RMI實例分析
  
  1.遠程對象的本地接口聲明(RMIOperate.java)
  
  該類僅僅是一個接口聲明,RMI客戶機可以直接使用它,RMI服務器必須通過一個遠程對象來實現它,并用某個專有的URL注冊它的一個實例。
  
  具體代碼如下:
  
  package wf.rmi; //包名
  import java.rmi.*; //導入類包
  /*RMI本地接口必須從Remote接口派生*/
   public interface RMIOperate extends Remote
  {
   /*接口中的具體方法聲明,注重必須聲明拋出RemoteException*/
   public double add(double x, double y) throws RemoteException;
  //輸入兩個浮點數,返回其和
   public double minus(double x, double y) throws RemoteException;
  //輸入兩個浮點數,返回其差
  }
  2.遠程對象實現類(OperateImpl.java)
  這個類應實現RMI客戶機調用的遠程服務對象的本地接口,它必須從UnicastRemoteObject繼續,構造函數應拋出RemoteException異常。
  具體代碼如下:
  
  package wf.rmi; //包名
  //導入需要的類包
  import java.rmi.*;
  import wf.rmi.RMIOperate;
  import java.rmi.server.UnicastRemoteObject;
  public class OperateImpl extends UnicastRemoteObject implements RMIOperate
  {
   /*構造函數*/
   public OperateImpl() throws RemoteException
   {
   }
   /*實現本地接口中聲明的add方法*/
   public double add(double x, double y) throws RemoteException
   {
   double z = x + y;
   return z;
   }
   /*實現本地接口中聲明的minus方法*/
   public double minus(double x, double y) throws RemoteException
   {
   double z = x - y;
   return z;
   }
  }
  3.RMI服務器類(RMIServer.java)
  該類創建遠程對象實現類OperateImpl的一個實例,然后通過一個專有的URL來注冊它。所謂注冊就是通過Java.rmi.Naming.bind()方法或Java.rmi.Naming.rebind()方法,將OperateImpl實例綁定到指定的URL上。
  
  具體實現代碼如下:
  
  package wf.rmi; //包名
  //導入需要的類包
  import java.rmi.Naming;
  import wf.rmi.OperateImpl;
  public class RMIServer
  {
   public static void main(String[] args)
   {
   try
   {
  //創建遠程對象的實現實例
  OperateImpl operObj = new OperateImpl();
  //提示信息
  System.out.PRintln("RMI Server Starting...");
  //將實例注冊到專有的URL
  Naming.rebind("rmi:///RMIOperate", operObj);
  //等待RMI客戶機調用的提示信息
  System.out.println("Waiting RMI Client Invoke...");
   }
   catch(Exception e)
   {
  e.printStackTrace();
   }
   }
  }
  4.RMI客戶機類(RMIClient.java)
  
  RMI客戶使用java.rmi.Naming.lookup()方法,在指定的遠程主機上查找RMI服務對象,若找到就把它轉換成本地接口RMIOperate類型。它與CORBA不同之處在于RMI客戶機必須知道提供RMI服務主機的URL,這個URL可以通過rmi://host/path或rmi://host:port/path來指定,假如省略端口號,就默認使用1099。Java.rmi.Naming.lookup()方法可能產生三個異常:Java.rmi.RemoteException、Java.rmi.NotBoundException、java.net. MalformedURLException,三個異常都需要捕捉。
  
  下面是具體代碼:
  
  package wf.rmi; //包名
  //導入需要的類包
  import java.rmi.*;
  import java.net.*;
  import java.io.*;
  public class RMIClient
  {
  public static void main(String[] args)
  {
    try
    {
      BufferedReader readIn = new BufferedReader(new
  InputStreamReader(System.in));
      String host = "localhost"; //默認為本地主機
   //帶輸入參數時,將host設置為指定主機
      if (args.length > 0)
        host = args[0];
      //根據指定的URL定位遠程實現對象
  RMIOperate rmiObj = (RMIOperate)Naming.lookup("rmi://" + host +
  "/RMIOperate");      //提示輸入運算參數1
  System.out.println("Please Input Data1: ");
      String str1 = readIn.readLine(); //讀取輸入參數1
      double x = 0;
      try
      {
   x = Double.parseDouble(str1); //分析輸入參數1,轉換為double類型
      }
     catch(NumberFormatException nfe)
      {
        x = 0; //假如轉換異常,則重置x為0
      }
   //提示輸入運算參數2
      System.out.println("Please Input Data2: ");
      String str2 = readIn.readLine();//讀取輸入參數2
      double y = 0;
      try
      {
        y = Double.parseDouble(str2); //分析輸入參數2,轉換為double類型
      }
      catch(NumberFormatException nfe)
      {
        y = 0; //假如轉換異常,則重置y為0
      }
   //調用遠程對象的本地接口方法,實現輸入參數的加、減運算,并輸出結果
     System.out.println("Data1 Add Data2 Result is: " + rmiObj.add(x, y));
     System.out.println("Data1 minus Data2 Result is: " +
    rmiObj.minus(x, y));
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }
  }
  RMI Server/Client的編譯與運行
  
  (1).編譯所有的源代碼(如圖1)
   RMI與CORBA在Java中的應用(圖一)
  圖1
  (2).生成客戶端存根和服務器框架(如圖2)
   RMI與CORBA在Java中的應用(圖二)
  圖2
  這將構造OperateImpl_Stub.class和OperateImpl_Skel.class。這時可將所有的Class文件打包成jar,并將其分別置于RMI客戶機和RMI服務器的ClassPath中(如圖3):
   RMI與CORBA在Java中的應用(圖三)
  圖3
  當然,也可以只將RMIOperate.class、RMIClient.class和OperateImpl_Stub.class復制到RMI客戶機,將RMIOperate.class、OperateImpl.class 、RMIServer.class和OperateImpl_Skel.class復制到RMI服務器。
  (3).啟動RMI注冊(如圖4)
   RMI與CORBA在Java中的應用(圖四)
  圖4
  (4).運行和調用
  ● 在服務器上執行RMIServer(如圖5)
   RMI與CORBA在Java中的應用(圖五)
  圖5
  ● 在本地客戶機上運行RMIClient(如圖6)
   RMI與CORBA在Java中的應用(圖六)
  圖6
  ● 在遠程客戶機上運行RMIClient(須指明RMI服務器主機名或ip地址,如圖7)
   RMI與CORBA在Java中的應用(圖七)
  圖7
  至

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美va欧美va香蕉在| 久久精品免费电影| 久久偷看各类女兵18女厕嘘嘘| 国产丝袜高跟一区| www.亚洲免费视频| 成人精品网站在线观看| 91精品久久久久久久久久另类| 欧美夜福利tv在线| 亚洲成人免费在线视频| 欧美在线视频导航| 91爱视频在线| 久久亚洲私人国产精品va| 成人激情在线播放| 久久精品亚洲94久久精品| 91精品中国老女人| 国产综合视频在线观看| 欧美激情视频一区二区| 日本亚洲欧洲色α| 中文字幕少妇一区二区三区| 91夜夜揉人人捏人人添红杏| 91久久久久久久久久| 亚洲精品在线视频| www.xxxx精品| 成人字幕网zmw| 国语自产偷拍精品视频偷| 性夜试看影院91社区| 国产精品毛片a∨一区二区三区|国| 亚洲人成电影在线| 久久人人爽人人爽人人片亚洲| 蜜月aⅴ免费一区二区三区| 成人精品一区二区三区电影黑人| 国产欧洲精品视频| 久久精品视频中文字幕| 成人av在线天堂| 欧美国产日产韩国视频| 97精品久久久中文字幕免费| 黑人狂躁日本妞一区二区三区| 国产中文日韩欧美| 精品国产成人av| 精品国产乱码久久久久久天美| 国产精品视频免费在线观看| 不卡av在线网站| 欧美亚洲第一区| 亚洲福利在线播放| 久久免费视频网站| 最近2019年中文视频免费在线观看| 欧美国产日韩一区二区三区| 中文字幕一区电影| 日本精品一区二区三区在线播放视频| 国产成人极品视频| 欧美在线视频一区二区| 日韩不卡在线观看| 韩国视频理论视频久久| 91色中文字幕| 91亚洲精品一区二区| 久久久久久亚洲| 国产97免费视| 亚洲精品国产精品乱码不99按摩| 久久久精品美女| 亚洲自拍在线观看| 国产一区二区三区免费视频| 成人免费看吃奶视频网站| 国产精品2018| 国产精品欧美日韩一区二区| 国产精品丝袜高跟| 日韩精品在线视频美女| 色综合久久天天综线观看| 欧美日韩成人免费| 国产精品高潮呻吟视频| 国产一区欧美二区三区| 日韩av电影院| 久久av.com| 精品国产欧美一区二区三区成人| 欧美成人中文字幕在线| 中文字幕欧美日韩| 亚洲qvod图片区电影| 国产精品盗摄久久久| 欧美理论片在线观看| 日韩激情在线视频| 国产精品一区二区3区| 91精品国产91久久久久久久久| 91精品国产乱码久久久久久蜜臀| 精品久久久久久电影| 久久夜精品va视频免费观看| 亚洲大胆人体在线| 亚洲精品久久久久中文字幕欢迎你| 成人精品网站在线观看| 91精品国产乱码久久久久久久久| 亚洲色图av在线| 欧美丰满片xxx777| 中文日韩电影网站| 久久久999国产精品| 国产性色av一区二区| 久久精品视频中文字幕| 久久视频在线看| 国产69精品99久久久久久宅男| 亚洲成人网在线观看| 九九久久久久99精品| zzjj国产精品一区二区| 亚洲性生活视频在线观看| 色哟哟亚洲精品一区二区| 欧美午夜片欧美片在线观看| 欧美亚州一区二区三区| 欧美性猛交xxxx黑人猛交| 一区二区福利视频| 国产一区二区精品丝袜| 精品视频在线播放色网色视频| 国产精品久久久久77777| 亚洲奶大毛多的老太婆| 亚洲一二在线观看| 国产免费一区视频观看免费| 亚洲激情自拍图| 狠狠躁夜夜躁人人躁婷婷91| 一夜七次郎国产精品亚洲| 欧美限制级电影在线观看| 欧洲日本亚洲国产区| 欧美国产欧美亚洲国产日韩mv天天看完整| 精品magnet| 日本久久91av| 亚洲欧洲偷拍精品| 国产欧美在线视频| 成人黄色在线观看| 亚洲女人天堂av| 欧美激情视频一区二区三区不卡| 亚洲成人久久电影| 国产一区二区三区在线播放免费观看| 国语自产在线不卡| 欧美午夜性色大片在线观看| 亚洲男人天堂古典| 日韩av在线资源| 国产美女搞久久| 欧美成人剧情片在线观看| 久久久www成人免费精品张筱雨| 亚洲精品白浆高清久久久久久| 久久久之久亚州精品露出| 亚洲理论电影网| 日韩中文字幕在线视频播放| 欧美丰满少妇xxxx| 亚洲欧美日韩中文在线| 欧美日韩亚洲一区二区| 久久久国产精品x99av| 欧美成人四级hd版| 欧美成人免费播放| 黑人巨大精品欧美一区二区免费| 欧美放荡办公室videos4k| 亚洲欧美另类中文字幕| 尤物九九久久国产精品的分类| 91大神福利视频在线| 国产精品视频一区国模私拍| 亚洲精品在线不卡| 日韩av网址在线| 国产欧美日韩精品丝袜高跟鞋| 精品性高朝久久久久久久| 色综合久久久久久中文网| 91po在线观看91精品国产性色| 国产午夜精品麻豆| 精品少妇v888av| 亚洲国产高清高潮精品美女| 久久91亚洲精品中文字幕| 亚洲美女精品成人在线视频| 羞羞色国产精品| 97在线观看视频| 日本精品久久中文字幕佐佐木| y97精品国产97久久久久久|