Core Java學習筆記 RMI

          Posted on 2009-07-15 21:51 eric_xu 閱讀(235) 評論(0)  編輯  收藏 所屬分類: Java

          CORBASOAP都是完全獨立于語言的。CORBA的接口定于語言是IDLSOAPWSDL

          遠程方法調用


          存根:

          1.       被使用的遠程對象的標識符;

          2.       被調用的方法的描述;

          3.       編組后的參數。

          服務端接受對象:

          1.       反編組參數;

          2.       定位要調用的對象;

          3.       調用所需方法;

          4.       捕獲返回值或該調用產生的異常,并對它編組;

          5.       將返回值編組,打包送給客戶端存根。

          遠程對象的所有接口都必須繼承Remote接口,java.rmi.remote。接口中的所有方法也必須拋出RemoteException異常。

          基本的RMI


          服務器類通常繼承自java.rmi.server.RemoteServer類。RemoteServer是一個抽象類,僅僅定義了服務器對象與其遠程存根之間通信的基本機制。UnicastRemoteServer是一個實體類,繼承自RemoteServer

          服務器程序使用自舉注冊服務來注冊對象,然后客戶端可以獲取這些對象的存根。

          // server

          ProductImpl p1 = new ProductImpl("Blackwell Toaster");

          Context namingContext = new InitialContext();//建立一個命名context來訪問RMI注冊表

          namingContext.bind("rmi:toaster", p1);//rmi:toasterp1對象綁定。

          // client

          Product p = (Product) namingContext.lookup("rmi://yourserver.com/toaster");//返回url對應的遠程對象。

          默認情況下,服務器是localhost,端口為1099

          可獲得所有URL中帶有rmi:的服務器對象的列表。

          NamingEnumeration<NameClassPair> e = namingContext.list("rmi:");


          只要實現Serializable接口的類都可以被復制。
          遠程對象是作為存根通過網絡傳遞的,而非遠程對象是通過復制。
           

          posts - 37, comments - 5, trackbacks - 0, articles - 0

          Copyright © eric_xu

          主站蜘蛛池模板: 上栗县| 博野县| 宾川县| 邳州市| 江口县| 红安县| 从化市| 马尔康县| 连城县| 巧家县| 南投县| 青岛市| 兴化市| 乐业县| 廊坊市| 濮阳市| 麻江县| 台北县| 南阳市| 三明市| 铁岭市| 玉环县| 武义县| 乐至县| 溧水县| 乾安县| 道真| 吉隆县| 津市市| 海兴县| 洪雅县| 界首市| 榆中县| 汉寿县| 北京市| 无锡市| 鹤壁市| 班玛县| 曲松县| 杂多县| 邯郸县|