Naming 類
java.rmi.Naming 類提供儲存和獲得對遠程對象註冊服務程式中遠程對象進行
引用的方法。Naming 類中的方法以如下形式的,URL 格式的 java.lang.String
作為其中的一個參數:
//host:port/name
其中 host 是註冊服務程式所在的主機(遠程或本地),port 是註冊服務程式
接收調用的連接埠號碼,name 是注 冊表未作出解釋的簡單字串。host 和 port
是可選的。如果省略了 host,則主機預設值為本地 主機。如果省略了 port,
則連接埠預設值為 1099,即 RMI 系統註冊服務程式 rmiregistry 所用的“眾所
周知”的連接埠。
為遠程對象綁定名稱即為稍後使用的遠程對象關聯或註冊名稱,可用於查詢該遠
程對象。可以使用 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,
RemoteExceptio
n;
public static void bind(String url, Remote obj)
throws AlreadyBoundException, java.net.MalformedURLException,
RemoteExce
ption;
public static void rebind(String url, Remote obj)
throws RemoteException, java.net.MalformedURLException;
public static void unbind(String url)
throws RemoteException, NotBoundException, java.net.MalformedURLExce
ptio
n;
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 操作。