JavaTM 2 Platform
Standard Ed. 6

javax.management.remote.rmi
類別 RMIServerImpl

java.lang.Object
  繼承者 javax.management.remote.rmi.RMIServerImpl
所有已實作的介面:
Closeable, Remote, RMIServer
直接已知子類別:
RMIIIOPServerImpl, RMIJRMPServerImpl

public abstract class RMIServerImpl
extends Object
implements Closeable, RMIServer

表示連接器伺服器的 RMI 物件。遠端客戶端可使用 newClient(Object) 方法進行連接。此方法返回表示此連接的 RMI 物件。

使用者程式碼不經常直接參考此類別。RMI 連接伺服器通常使用 RMIConnectorServer 類別創建。遠端客戶端通常使用 JMXConnectorFactory 或通過實例化 RMIConnector 創建連接。

這是一個抽象類別。由具體的子類別定義客戶端連接物件的細節,例如使用的是 JRMP 還是 IIOP。

從以下版本開始:
1.5

建構子摘要
RMIServerImpl(Map<String,?> env)
          建構一個新的 RMIServerImpl
 
方法摘要
protected  void clientClosed(RMIConnection client)
          關閉由 makeClient 創建的客戶端連接時調用的方法。
 void close()
          關閉此連接伺服器。
protected abstract  void closeClient(RMIConnection client)
          關閉由 makeClient 建立的客戶端連接。
protected abstract  void closeServer()
          由 close() 調用以關閉連接器伺服器。
protected abstract  void export()
          導出此 RMI 物件。
 ClassLoader getDefaultClassLoader()
          獲得此連接器伺服器使用的預設 ClassLoader
 MBeanServer getMBeanServer()
          此連接器伺服器所連接的 MBeanServer
protected abstract  String getProtocol()
          返回該物件的協議字元串。
 String getVersion()
          此連接器伺服器能識別的 RMI 連接協議版本。
protected abstract  RMIConnection makeClient(String connectionId, Subject subject)
          創建一個新的客戶端連接。
 RMIConnection newClient(Object credentials)
          創建一個新的客戶端連接。
 void setDefaultClassLoader(ClassLoader cl)
          設置此連接器伺服器的預設 ClassLoader
 void setMBeanServer(MBeanServer mbs)
          設置此連接器伺服器所連接的 MBeanServer
abstract  Remote toStub()
          返回此伺服器物件的可遠端化的 stub。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

RMIServerImpl

public RMIServerImpl(Map<String,?> env)

建構一個新的 RMIServerImpl

參數:
env - 套件含新的 RMIServerImpl 屬性的環境。可以為 null,它等效於一個空映射。
方法詳細資訊

export

protected abstract void export()
                        throws IOException

導出此 RMI 物件。

拋出:
IOException - 如果無法導出此 RMI 物件。

toStub

public abstract Remote toStub()
                       throws IOException
返回此伺服器物件的可遠端化的 stub。

返回:
可遠端化的 stub。
拋出:
IOException - 如果無法獲得 stub,例如 RMIServerImpl 尚未導出。

setDefaultClassLoader

public void setDefaultClassLoader(ClassLoader cl)

設置此連接器伺服器的預設 ClassLoader。新客戶端連接將使用此 classloader。現有客戶端連接不受影響。

參數:
cl - 此連接器伺服器將使用的新 ClassLoader
另請參見:
getDefaultClassLoader()

getDefaultClassLoader

public ClassLoader getDefaultClassLoader()

獲得此連接器伺服器使用的預設 ClassLoader

返回:
此連接器伺服器使用的預設 ClassLoader

另請參見:
setDefaultClassLoader(java.lang.ClassLoader)

setMBeanServer

public void setMBeanServer(MBeanServer mbs)

設置此連接器伺服器所連接的 MBeanServer。新的客戶端連接將與此 MBeanServer 交互。現有客戶端連接不受影響。

參數:
mbs - 新的 MBeanServer。可以為 null,但將在盡可能長的時間內重用新的客戶端連接。
另請參見:
getMBeanServer()

getMBeanServer

public MBeanServer getMBeanServer()

此連接器伺服器所連接的 MBeanServer。這是傳遞給此物件上的 setMBeanServer(javax.management.MBeanServer) 的最後一個值,或者如果從未調用過該方法,則為 null。

返回:
此連接器所連接的 MBeanServer
另請參見:
setMBeanServer(javax.management.MBeanServer)

getVersion

public String getVersion()
從介面 RMIServer 複製的描述

此連接器伺服器能識別的 RMI 連接協議版本。這是一個具有以下格式的字元串:

 protocol-version implementation-name
 

protocol-version 是由句點 (.) 分隔的兩個或多個非負整陣列成的序列。這裡,此文檔描述的這一版本的實作必須使用字元串 1.0

協議版本後面必須有一個空格,然後是實作名稱。實作名稱的格式未指定。建議在其中包含一個實作版本號。例如,出於安全原因,實作可使用空字元串作為其實作名稱。

指定者:
介面 RMIServer 中的 getVersion
返回:
具有這裡描述格式的字元串。

newClient

public RMIConnection newClient(Object credentials)
                        throws IOException

創建一個新的客戶端連接。此方法調用 makeClient 並將返回的客戶端連接物件添加到一個內部列表中。當此 RMIServerImpl 使用其 close() 方法被關閉時,將調用列表中剩餘的每個物件的 close() 方法。

即使事實上一個客戶端連接物件位於內部列表中,也不影響對其進行垃圾回收。

指定者:
介面 RMIServer 中的 newClient
參數:
credentials - 此物件指定使用者定義的憑據,其傳入此伺服器以便在創建 RMIConnection 之前驗證調用者。可以為 null。
返回:
新創建的 RMIConnection。這通常是由 makeClient 創建的物件,儘管實作可能選擇將該物件包裹在另一個實作 RMIConnection 的物件中。
拋出:
IOException - 如果無法創建或導出新的客戶端物件。
SecurityException - 如果給定的憑據不允許伺服器成功地驗證使用者。
IllegalStateException - 如果 getMBeanServer() 為 null。

makeClient

protected abstract RMIConnection makeClient(String connectionId,
                                            Subject subject)
                                     throws IOException

創建一個新的客戶端連接。此方法由公共方法 newClient(Object) 調用。

參數:
connectionId - 新連接的 ID。由此連接器伺服器打開的每個連接將具有不同的 ID。如果此參數為 null,則行為不明確。
subject - 經驗證的 subject。可以為 null。
返回:
新創建的 RMIConnection
拋出:
IOException - 如果無法創建或導出新的客戶端物件。

closeClient

protected abstract void closeClient(RMIConnection client)
                             throws IOException

關閉由 makeClient 建立的客戶端連接。

參數:
client - 由 makeClient 以前返回的一個連接,以前尚未在其上調用過 closeClient 方法。如果違反這些條件,包括 client 為 null 的情況,則行為不明確。
拋出:
IOException - 如果無法關閉客戶端連接。

getProtocol

protected abstract String getProtocol()

返回該物件的協議字元串。對於 RMI/JRMP,該字元串為 rmi;對於 RMI/IIOP,該字元串為 iiop

返回:
此物件的協議字元串。

clientClosed

protected void clientClosed(RMIConnection client)
                     throws IOException

關閉由 makeClient 創建的客戶端連接時調用的方法。調用結果物件的 close 方法時,定義 makeClient 的子類別必須安排此要調用的方法。這方便從 RMIServerImpl 的連接列表中將其移除。client 不在該列表中並不表示錯誤。

從連接列表中移除 client 後,此方法調用 closeClient(client)

參數:
client - 已關閉的客戶端連接。
拋出:
IOException - 如果 closeClient(javax.management.remote.rmi.RMIConnection) 拋出此異常。
NullPointerException - 如果 client 為 null。

close

public void close()
           throws IOException

關閉此連接伺服器。此方法首先調用 closeServer() 方法以便不接受任何新的客戶端連接。然後對由 makeClient 返回的其餘每個 RMIConnection 物件調用其 close 方法。

多次調用此方法時,行為不明確。

如果 closeServer() 拋出 IOException,會關閉每個單獨的連接,然後從此方法拋出 IOException

如果 closeServer() 正常返回,但有一個或多個單獨連接拋出 IOException,則在關閉所有的連接後,從此方法拋出其中的一個 IOException。如果有多個連接拋出 IOException,則無法確定哪一個異常是從此方法拋出的。

指定者:
介面 Closeable 中的 close
拋出:
IOException - 如果 closeServer()RMIConnection.close() 之一調用拋出了 IOException

closeServer

protected abstract void closeServer()
                             throws IOException

close() 調用以關閉連接器伺服器。從此方法返回後,連接器伺服器不接受任何新的連接。

拋出:
IOException - 如果關閉連接器伺服器的嘗試失敗。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only