無為

          無為則可為,無為則至深!

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
          客戶機接口  
          程序員在編寫使用遠程對象的 applet 或應用程序時,需要注意 java.rmi 包 
          中可用的 RMI 系統客戶機可視接口。 

          4.1 遠程接口 

          package java.rmi; 
          public interface Remote {} 

          java.rmi.Remote 接口用來識別所有遠程接口;所有遠程對象必須直接或間接 
          實現此接口。 

          實現類可以實現任意數目的遠程接口,并可擴展其它遠程實現類。RMI 提供一些 
          遠程對象實現可以擴展的類,有助于遠程對象的創建。這些類是 
          java.rmi.server.UnicastRemoteObject

          java.rmi.activation.Activatable。 

          有關如何定義遠程接口的詳細信息,參見“java.rmi.Remote 接口”(2.4.1)一 
          節。 

          4.2 RemoteException 類 
          類 java.rmi.RemoteException 是許多在執行遠程方法調用時可能發生的、與 
          通信有關的異常的通用超類。遠程接口中的每種方法(也是一個接口)必須在其 
           throws 子句中列出 RemoteException(或其超類,如  
          java.io.IOException 或 java.lang.Exception)。  

          package java.rmi; 
          public class RemoteException extends java.io.IOException 

              public Throwable detail; 
              public RemoteException(); 
              public RemoteException(String s); 
              public RemoteException(String s, Throwable ex); 
              public String getMessage(); 
              public void printStackTrace(); 
              public void printStackTrace(java.io.PrintStream ps); 
              public void printStackTrace(java.io.PrintWriter pw); 



          RemoteException 可用詳細消息(即 s)和一個嵌套異常(即 ex,Throwable) 
          進行構造。嵌套異常 ex 在構造函數的第三種形式中被指定為參數,通常是 RMI 
          調用過程中發生的基本 I/O 異常。 

          getMessage 方法返回異常的詳細消息,包括嵌套異常(如果有)中的消息。 
          printStackTrace 方法在類 java.lang.Throwable 中將被覆蓋掉,以打印嵌套異 
          常的堆棧跟蹤。 

          4.3 Naming 類 
          java.rmi.Naming 類提供存儲和獲得對遠程對象注冊服務程序中遠程對象進行 
          引用的方法。Naming 類中的方法以如下形式的,URL 格式的 java.lang.String 
            
          作為其中的一個參數: 

             //host:port/name 
          其中 host 是注冊服務程序所在的主機(遠程或本地),port 是注冊服務程序 
          接收調用的端口號,name 是注 冊表未作出解釋的簡單字符串。host 和 port 
           是可選的。如果省略了 host,則主機缺省值為本地 主機。如果省略了 port, 

          則端口缺省值為 1099,即 RMI 系統注冊服務程序 rmiregistry 所用的“眾所 
          周知”的端口。  
          為遠程對象綁定名稱即為稍后使用的遠程對象關聯或注冊名稱,可用于查詢該遠 
          程對象??梢允褂?nbsp;Naming 類的 bind 或 rebind 方法將遠程對象與名稱相關聯 
          。  

          當遠程對象已用 RMI 注冊服務程序在本地主機上進行過注冊(綁定)后,遠程 
          (或本地)主機上的調用程序就可以按名稱查詢遠程對象、獲得其引用,然后在 
          對象上調用遠程方法。必要時,某一主機上運行的服務器可以共享一個注冊服務 
          程序。 
          服務器的各個進程也可創建和使用自己的注冊服務程序 
          (詳細信息,參見 java.rmi.registry.LocateRegistry.createRegistry 方法) 
          。 

          package java.rmi; 
          public final class Naming

              public static Remote lookup(String url) 
                  throws NotBoundException, java.net.MalformedURLException, RemoteException; 
              public static void bind(String url, Remote obj) 
                  throws AlreadyBoundException, java.net.MalformedURLException, RemoteException; 
              public static void rebind(String url, Remote obj)
                  throws RemoteException, java.net.MalformedURLException; 
              public static void unbind(String url) 
                  throws RemoteException, NotBoundException, java.net.MalformedURLException; 
              public static String[] list(String url) 
                  throws RemoteException, java.net.MalformedURLException; 

          lookup 方法返回與名稱的文件部分相關聯的遠程對象。如果名稱未綁定到對象上 
          ,則拋出 NotBoundException。  
          bind 方法將把指定名稱綁定到遠程對象上。如果該名稱已綁定到某一對象上, 

          則拋出 AlreadyBoundException。  

          rebind 方法總將名稱綁定到對象上,無論該名稱是否已綁定。原有綁定將丟失。 

          unbind 方法將取消名稱和遠程對象間的綁定。如果沒有綁定,則拋出 NotBound 
          Exception。  

          list 方法返回一個 String 對象的數組,該對象包含注冊服務程序中綁定 URL  
          的快照。 
          為了向注冊服務程序查詢其內容列表,只需要 URL 上的主機名和端口信息;因此 
          ,URL 的“file”部分將被忽略。 


          ---------------------------------------------------------------------- 
          ---------- 

          注意 - 這些方法也可能拋出 java.rmi.AccessException。AccessException 表 
          示調用程序無執 
          行特定操作的權限。例如,只有運行注冊服務程序的主機上的本地客戶機才允許 
          執行 bind、rebind  
          和 unbind 操作。但任何非本地客戶機都可調用 lookup 操作。  

          凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
          、轉載請注明來處和原文作者。非常感謝。

          posted on 2005-12-14 13:12 草兒 閱讀(106) 評論(0)  編輯  收藏 所屬分類: Java編程經驗談
          主站蜘蛛池模板: 肇东市| 灵川县| 临武县| 密云县| 恩平市| 利津县| 靖西县| 峨眉山市| 黄骅市| 江山市| 太湖县| 应城市| 北海市| 鹤壁市| 赤壁市| 农安县| 涿州市| 得荣县| 思茅市| 徐闻县| 西丰县| 斗六市| 南江县| 旌德县| 邯郸县| 天全县| 土默特右旗| 安龙县| 淄博市| 彭阳县| 天镇县| 盈江县| 西青区| 福清市| 湖南省| 宣汉县| 汉源县| 盐山县| 义乌市| 昔阳县| 昌黎县|