JavaTM 2 Platform
Standard Ed. 6

javax.management.remote.rmi
類別 RMIConnectorServer

java.lang.Object
  繼承者 javax.management.NotificationBroadcasterSupport
      繼承者 javax.management.remote.JMXConnectorServer
          繼承者 javax.management.remote.rmi.RMIConnectorServer
所有已實作的介面:
MBeanRegistration, NotificationBroadcaster, NotificationEmitter, JMXAddressable, JMXConnectorServerMBean

public class RMIConnectorServer
extends JMXConnectorServer

JMX API 連接器伺服器,用於從遠端客戶端創建基於 RMI 的連接。通常情況下,使用 JMXConnectorServerFactory 建立這樣的連接器伺服器。但是,專門的應用程序可直接使用此類別,例如使用 RMIServerImpl 物件。

從以下版本開始:
1.5

欄位摘要
static String JNDI_REBIND_ATTRIBUTE
          屬性名稱,它指定代表 RMI 連接器伺服器的 RMIServer stub 是否應覆寫位於同一位址的現有 stub。
static String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
          屬性名稱,它指定了與此連接器一起創建的 RMI 物件的 RMIClientSocketFactory
static String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
          屬性名稱,它指定了與此連接器一起創建的 RMI 物件的 RMIServerSocketFactory
 
從類別 javax.management.remote.JMXConnectorServer 繼承的欄位
AUTHENTICATOR
 
建構子摘要
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment)
          建立 RMIConnectorServer
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, MBeanServer mbeanServer)
          為給定的 MBean 伺服器建立一個 RMIConnectorServer
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, RMIServerImpl rmiServerImpl, MBeanServer mbeanServer)
          為給定的 MBean 伺服器建立一個 RMIConnectorServer
 
方法摘要
protected  void connectionClosed(String connectionId, String message, Object userData)
          正常關閉客戶端連接時由子類別調用。
protected  void connectionFailed(String connectionId, String message, Object userData)
          客戶端連接失敗時由子類別調用。
protected  void connectionOpened(String connectionId, String message, Object userData)
          打開新的客戶端連接時由子類別調用。
 JMXServiceURL getAddress()
          該連接器伺服器的位址。
 Map<String,?> getAttributes()
          此連接器伺服器的屬性。
 boolean isActive()
          確定連接器伺服器是否活動。
 void setMBeanServerForwarder(MBeanServerForwarder mbsf)
          添加一個截取對 MBean 伺服器請求的物件,該請求是通過此連接器伺服器到達的。
 void start()
          啟動連接器伺服器,即啟動對客戶端連接的偵聽。
 void stop()
          取消啟動連接器伺服器,即停止對客戶端連接的偵聽。
 JMXConnector toJMXConnector(Map<String,?> env)
          返回此連接器伺服器的客戶端 stub。
 
從類別 javax.management.remote.JMXConnectorServer 繼承的方法
getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister
 
從類別 javax.management.NotificationBroadcasterSupport 繼承的方法
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

JNDI_REBIND_ATTRIBUTE

public static final String JNDI_REBIND_ATTRIBUTE

屬性名稱,它指定代表 RMI 連接器伺服器的 RMIServer stub 是否應覆寫位於同一位址的現有 stub。與此屬性關聯的值(如果有)應為與 "true""false" 相等(忽略大小寫)的字元串。預設值為 false。

另請參見:
常數欄位值

RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE

public static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE

屬性名稱,它指定了與此連接器一起創建的 RMI 物件的 RMIClientSocketFactory。與此屬性關聯的值的型別必須為 RMIClientSocketFactory,並且只能在創建連接器伺服器時提供的 Map 參數中指定。

另請參見:
常數欄位值

RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE

public static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE

屬性名稱,它指定了與此連接器一起創建的 RMI 物件的 RMIServerSocketFactory。與此屬性關聯的值的型別必須為 RMIServerSocketFactory,並且只能在創建連接器伺服器時提供的 Map 參數中指定。

另請參見:
常數欄位值
建構子詳細資訊

RMIConnectorServer

public RMIConnectorServer(JMXServiceURL url,
                          Map<String,?> environment)
                   throws IOException

建立 RMIConnectorServer。此方法與調用 RMIConnectorServer(directoryURL,environment,null,null) 具有相同的效果。

參數:
url - 一個定義如何創建連接器伺服器的 URL。不能為 null。
environment - 控制著 RMI 物件的創建和存儲的屬性。可以為 null,它等效於一個空映射。
拋出:
IllegalArgumentException - 如果 url 為 null。
MalformedURLException - 如果 url 不符合 RMI 連接器的語法,或者其協議不能由此實作識別。使用此建構子時,只有 "rmi" 和 "iiop" 為有效的。
IOException - 如果出於某種原因無法創建連接器伺服器,或者其 start 方法不可避免地失敗。

RMIConnectorServer

public RMIConnectorServer(JMXServiceURL url,
                          Map<String,?> environment,
                          MBeanServer mbeanServer)
                   throws IOException

為給定的 MBean 伺服器建立一個 RMIConnectorServer。此方法與調用 RMIConnectorServer(directoryURL,environment,null,mbeanServer) 具有相同的效果。

參數:
url - 一個定義如何創建連接器伺服器的 URL。不能為 null。
environment - 控制著 RMI 物件的創建和存儲的屬性。可以為 null,它等效於一個空映射。
mbeanServer - 新的連接器伺服器將與其連接的 MBean 伺服器,或者如果它將通過註冊為 MBean 伺服器中的一個 MBean 進行連接,則為 null。
拋出:
IllegalArgumentException - 如果 url 為 null。
MalformedURLException - 如果 url 不符合 RMI 連接器的語法,或者其協議不能由此實作識別。使用此建構子時,只有 "rmi" 和 "iiop" 為有效的。
IOException - 如果出於某種原因無法創建連接器伺服器,或者其 start 方法不可避免地失敗。

RMIConnectorServer

public RMIConnectorServer(JMXServiceURL url,
                          Map<String,?> environment,
                          RMIServerImpl rmiServerImpl,
                          MBeanServer mbeanServer)
                   throws IOException

為給定的 MBean 伺服器建立一個 RMIConnectorServer

參數:
url - 一個定義如何創建連接器伺服器的 URL。不能為 null。
environment - 控制著 RMI 物件的創建和存儲的屬性。可以為 null,它等效於一個空映射。
rmiServerImpl - RMIServer 介面的一個實作,與 url 中指定的協議型別一致。如果此參數為非 null,則 url 指定的協議型別沒有約束,假定其為有效。否則,將只識別 "rmi" 和 "iiop"。
mbeanServer - 新的連接器伺服器將與其連接的 MBean 伺服器,或者如果它將通過註冊為 MBean 伺服器中的一個 MBean 進行連接,則為 null。
拋出:
IllegalArgumentException - 如果 url 為 null。
MalformedURLException - 如果 url 不符合 RMI 連接器的語法,或者其協議不能由此實作識別。在 rmiServerImpl 為 null 時,只能識別 "rmi" 和 "iiop"。
IOException - 如果出於某種原因無法創建連接器伺服器,或者其 start 方法不可避免地失敗。
另請參見:
start()
方法詳細資訊

toJMXConnector

public JMXConnector toJMXConnector(Map<String,?> env)
                            throws IOException

返回此連接器伺服器的客戶端 stub。客戶端 stub 為一個可序列化的物件,其 connect 方法可用於建立一個到此連接器伺服器的新連接。

指定者:
介面 JMXConnectorServerMBean 中的 toJMXConnector
覆寫:
類別 JMXConnectorServer 中的 toJMXConnector
參數:
env - 客戶端連接參數,與提供給 JMXConnector.connect(Map) 的參數具有相同的型別。可以為 null,它等效於一個空映射。
返回:
可用於建立到此連接器伺服器的新連接的客戶端 stub。
拋出:
UnsupportedOperationException - 如果此連接器伺服器不支持產生客戶端 stub。
IllegalStateException - 如果未啟動 JMXConnectorServer(請參閱 isActive())。
IOException - 如果存在通信問題而導致無法創建 stub。

start

public void start()
           throws IOException

啟動連接器伺服器,即啟動對客戶端連接的偵聽。在連接器伺服器已啟動時,調用此方法沒有任何作用。在連接器伺服器已停止時,調用此方法將產生 IOException

此方法第一次調用時的行為取決於建構時提供的如下所示的參數。

首先,需要一個 RMIServerImpl 的子類別的物件,以便將連接器伺服器從 RMI 導出:

如果給定的位址包含一個 JNDI 目錄 URL(如在 javax.management.remote.rmi 的套件文檔中的指定),則該 RMIConnectorServer 通過將 RMIServerImpl 綁定到給定位址進行引導。

如果 JMXServiceURL 的 URL 路徑部分為空或一個單獨的斜線 (/),則 RMI 物件將不會綁定到一個目錄。相反,RMIConnectorServer 位址(由 getAddress() 返回)的 URL 路徑中將包含一個對它的參考的編碼。javax.management.remote.rmi 的套件文檔中有對 rmiiiop 的編碼的描述。

當 URL 路徑既不為空又不是一個 JNDI 目錄 URL,或者當協議既不是 rmi 又不是 iiop 時的行為由實作定義,並且在創建或啟動連接器伺服器時可能包含拋出 MalformedURLException 的行為。

拋出:
IllegalStateException - 如果此連接器伺服器尚未連接到 MBean 伺服器。
IOException - 如果連接器伺服器無法啟動。

stop

public void stop()
          throws IOException

取消啟動連接器伺服器,即停止對客戶端連接的偵聽。調用此方法還將關閉所有由此伺服器建立的客戶端連接。返回此方法後,無論正常返回還是拋出異常,連接器伺服器都不再創建任何新的客戶端連接。

連接器伺服器一旦停止就無法再啟動。

在連接器伺服器已停止時,調用此方法沒有任何效果。在連接器伺服器尚未啟動時調用此方法將永久禁用連接器伺服器物件。

如果關閉客戶端連接導致異常,則該異常不會從此方法拋出。而會從 MBean 發出一個 JMXConnectionNotification,同時顯示無法關閉的連接的連接 ID。

關閉連接器伺服器是一個潛在的慢操作。例如,如果具有打開連接的客戶端發生崩潰,則關閉操作不得不等待網路協議逾時。不希望關閉操作出現阻塞的調用者應在單獨的執行緒中處理關閉。

此方法在連接器伺服器的 RMIServerImpl 物件上調用 close 方法。

如果 RMIServerImplstart 方法綁定到 JNDI 目錄,則該方法可解除到目錄的綁定。

拋出:
IOException - 如果無法完全關閉伺服器,或者如果無法從目錄解除 RMIServerImpl 的綁定。拋出此異常時,伺服器已經嘗試適當地關閉所有的客戶端連接、調用 RMIServerImpl.close() 並解除 RMIServerImpl 到其目錄的綁定。除了那些伺服器嘗試將它們關閉時產生異常的連接,所有的客戶端連接都被關閉。

isActive

public boolean isActive()
從介面 JMXConnectorServerMBean 複製的描述

確定連接器伺服器是否活動。當連接器伺服器的 start 方法成功返回時,此連接器伺服器即進入活動狀態,並一直保持活動狀態直到調用其 stop 方法或連接器伺服器失敗。

返回:
如果該連接器伺服器為活動的,則返回 true。

getAddress

public JMXServiceURL getAddress()
從介面 JMXConnectorServerMBean 複製的描述

該連接器伺服器的位址。

返回:
該連接器伺服器的位址,或者如果沒有任何位址,則返回 null。

getAttributes

public Map<String,?> getAttributes()
從介面 JMXConnectorServerMBean 複製的描述

此連接器伺服器的屬性。

返回:
包含該連接器伺服器的屬性的一個只讀映射。該映射中忽略了其值不可序列化的屬性。如果沒有可序列化的屬性,則返回的映射為空。

setMBeanServerForwarder

public void setMBeanServerForwarder(MBeanServerForwarder mbsf)
從介面 JMXConnectorServerMBean 複製的描述

添加一個截取對 MBean 伺服器請求的物件,該請求是通過此連接器伺服器到達的。此物件將作為任何由此連接器伺服器創建的新連接的 MBeanServer 提供。現有連接不受影響。

如果此連接器伺服器已與一個 MBeanServer 物件關聯,則將該物件提供給 mbsf.setMBeanServer。如果這樣做產生異常,則該方法拋出相同的異常,沒有任何其他作用。

如果此連接器尚未與一個 MBeanServer 物件關聯,或者如果剛才提到的 mbsf.setMBeanServer 調用成功,則 mbsf 成為該連接器伺服器的 MBeanServer

指定者:
介面 JMXConnectorServerMBean 中的 setMBeanServerForwarder
覆寫:
類別 JMXConnectorServer 中的 setMBeanServerForwarder
參數:
mbsf - 新的 MBeanServerForwarder

connectionOpened

protected void connectionOpened(String connectionId,
                                String message,
                                Object userData)
從類別 JMXConnectorServer 複製的描述

打開新的客戶端連接時由子類別調用。將由 JMXConnectorServer.getConnectionIds() 返回的 connectionId 添加到列表中,然後發出一個型別為 JMXConnectionNotification.OPENEDJMXConnectionNotification

覆寫:
類別 JMXConnectorServer 中的 connectionOpened
參數:
connectionId - 新連接的 ID。它必須與任何由此連接器伺服器先前打開的連接的 ID 不一樣。
message - 發出的 JMXConnectionNotification 的訊息。可以為 null。請參閱 Notification.getMessage()
userData - 發出的 JMXConnectionNotificationuserData。可以為 null。請參閱 Notification.getUserData()

connectionClosed

protected void connectionClosed(String connectionId,
                                String message,
                                Object userData)
從類別 JMXConnectorServer 複製的描述

正常關閉客戶端連接時由子類別調用。從列表中移除由 JMXConnectorServer.getConnectionIds() 返回的 connectionId,然後發出一個型別為 JMXConnectionNotification.CLOSEDJMXConnectionNotification

覆寫:
類別 JMXConnectorServer 中的 connectionClosed
參數:
connectionId - 已關閉連接的 ID。
message - 發出的 JMXConnectionNotification 的訊息。可以為 null。請參閱 Notification.getMessage()
userData - 發出的 JMXConnectionNotificationuserData。可以為 null。請參閱 Notification.getUserData()

connectionFailed

protected void connectionFailed(String connectionId,
                                String message,
                                Object userData)
從類別 JMXConnectorServer 複製的描述

客戶端連接失敗時由子類別調用。從列表中移除由 JMXConnectorServer.getConnectionIds() 返回的 connectionId,然後發出一個型別為 JMXConnectionNotification.FAILEDJMXConnectionNotification

覆寫:
類別 JMXConnectorServer 中的 connectionFailed
參數:
connectionId - 失敗連接的 ID。
message - 發出的 JMXConnectionNotification 的訊息。可以為 null。請參閱 Notification.getMessage()
userData - 發出的 JMXConnectionNotificationuserData。可以為 null。請參閱 Notification.getUserData()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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