JavaTM 2 Platform
Standard Ed. 6

javax.management
類別 MBeanServerFactory

java.lang.Object
  繼承者 javax.management.MBeanServerFactory

public class MBeanServerFactory
extends Object

提供 MBean 伺服器參考。沒有此類別的實例。

從 JMX 1.2 開始,此類別使替換預設的 MBeanServer 實作成為可能。使用 MBeanServerBuilder 類別實作此替換。可通過 javax.management.builder.initial 系統屬性指定要實例化的初始 MBeanServerBuilder 的類別。指定的類別必須是 MBeanServerBuilder 的公共子類別,並且必須具有公共的空建構子。

預設情況下,如果未指定該屬性的值,則創建一個 javax.management.MBeanServerBuilder 的實例。否則,MBeanServerFactory 會試圖使用 Thread.currentThread().getContextClassLoader() 載入指定的類別,如果該屬性值為 null,則使用 Class.forName() 載入指定的類別。然後它使用 Class.newInstance() 創建該 Class 的初始實例。如果在此過程中(例如 ClassNotFoundExceptionInstantiationException)引發已檢查異常,則該 MBeanServerFactory 將從 RuntimeException 內傳播此異常。

每次需要創建新的 MBeanServer 時都會查詢 javax.management.builder.initial 系統屬性,並載入該屬性所指向的類別。如果該類別與當前的 MBeanServerBuilder 的類別不同,則創建一個新的 MBeanServerBuilder。否則,MBeanServerFactory 可能創建一個新的 MBeanServerBuilder 或重用當前的 MBeanServerBuilder。

如果無法載入該屬性所指向的類別,或者該屬性所指向的類別不對應於有效的 MBeanServerBuilder 子類別,則拋出一個異常,並且在將 javax.management.builder.initial 系統屬性重置為有效值之前,不能創建任何 MBeanServer。

出於某種目的,例如添加一個額外的安全層,MBeanServerBuilder 使得包裹預設 MBeanServerBuilder 實作所返回的 MBeanServer 成為可能。

從以下版本開始:
1.5

方法摘要
static MBeanServer createMBeanServer()
          返回一個新物件,該物件使用標準的預設域名來實作 MBeanServer 介面。
static MBeanServer createMBeanServer(String domain)
          返回一個新物件,該物件使用指定的預設域名來實作 MBeanServer 介面。
static ArrayList<MBeanServer> findMBeanServer(String agentId)
          返回已註冊 MBeanServer 物件的列表。
static ClassLoaderRepository getClassLoaderRepository(MBeanServer server)
          返回給定 MBeanServer 使用的 ClassLoaderRepository。
static MBeanServer newMBeanServer()
          返回一個新物件,該物件使用標準的預設域名來實作 MBeanServer 介面,不保持對此新物件的內部參考。
static MBeanServer newMBeanServer(String domain)
          返回一個新物件,該物件使用指定的預設域名來實作 MBeanServer 介面,不保持對此新物件的內部參考。
static void releaseMBeanServer(MBeanServer mbeanServer)
          移除對已創建 MBeanServer 的內部 MBeanServerFactory 參考。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法詳細資訊

releaseMBeanServer

public static void releaseMBeanServer(MBeanServer mbeanServer)
移除對已創建 MBeanServer 的內部 MBeanServerFactory 參考。這允許垃圾回收器移除該 MBeanServer 物件。

參數:
mbeanServer - 要移除的 MBeanServer 物件。
拋出:
IllegalArgumentException - 如果未通過某個 createMBeanServer 方法產生 mbeanServer,或者如果已在該 mbeanServer 上調用 releaseMBeanServer
SecurityException - 如果有 SecurityManager 且調用者的權限不包括或隱含 MBeanServerPermission("releaseMBeanServer")

createMBeanServer

public static MBeanServer createMBeanServer()

返回一個新物件,該物件使用標準的預設域名來實作 MBeanServer 介面。如果使用者指定的域為 null,則將預設域名用作 MBean 的 ObjectName 的域部分。

標準的預設域名是 DefaultDomain

內部保存該 MBeanServer 參考。這就允許 findMBeanServer 返回對此 MBeanServer 物件的參考。

此方法等效於 createMBeanServer(null)

返回:
新創建的 MBeanServer。
拋出:
SecurityException - 如果有 SecurityManager 且調用者的權限不包括或隱含 MBeanServerPermission("createMBeanServer")
JMRuntimeException - 如果屬性 javax.management.builder.initial 存在,但是無法通過公共的無參數建構子實例化它所指定的類別;如果已實例化的產生器從其 newMBeanServerDelegatenewMBeanServer 方法中返回 null。
ClassCastException - 如果屬性 javax.management.builder.initial 存在並且可以被實例化,但是它的分派與 MBeanServerBuilder 不相容。

createMBeanServer

public static MBeanServer createMBeanServer(String domain)

返回一個新物件,該物件使用指定的預設域名來實作 MBeanServer 介面。如果使用者指定的域為 null,則將給定的域名用作 MBean 的 ObjectName 的域部分。

內部保存該 MBeanServer 參考。這就允許 findMBeanServer 返回對此 MBeanServer 物件的參考。

參數:
domain - 所創建的 MBeanServer 的預設域名。這是 MBeanServer.getDefaultDomain() 所返回的值。
返回:
新創建的 MBeanServer。
拋出:
SecurityException - 如果有 SecurityManager 且調用者的權限不包括或隱含 MBeanServerPermission("createMBeanServer")
JMRuntimeException - 如果屬性 javax.management.builder.initial 存在,但是無法通過公共的無參數建構子實例化它所指定的類別;如果已實例化的產生器從其 newMBeanServerDelegatenewMBeanServer 方法中返回 null。
ClassCastException - 如果屬性 javax.management.builder.initial 存在並且可以被實例化,但是它的分派與 MBeanServerBuilder 不相容。

newMBeanServer

public static MBeanServer newMBeanServer()

返回一個新物件,該物件使用標準的預設域名來實作 MBeanServer 介面,不保持對此新物件的內部參考。如果使用者指定的域為 null,則將預設域名用作 MBean 的 ObjectName 的域部分。

標準的預設域名是 DefaultDomain

不保存參考。findMBeanServer 無法返回對此 MBeanServer 物件的參考,但是沒有對該 MBeanServer 的參考時,垃圾回收器能夠移除該 MBeanServer 物件。

此方法等效於 newMBeanServer(null)

返回:
新創建的 MBeanServer。
拋出:
SecurityException - 如果有 SecurityManager 且調用者的權限不包括或隱含 MBeanServerPermission("newMBeanServer")
JMRuntimeException - 如果屬性 javax.management.builder.initial 存在,但是無法通過公共的無參數建構子實例化它所指定的類別;如果已實例化的產生器從其 newMBeanServerDelegatenewMBeanServer 方法中返回 null。
ClassCastException - 如果屬性 javax.management.builder.initial 存在並且可以被實例化,但是它的分派與 MBeanServerBuilder 不相容。

newMBeanServer

public static MBeanServer newMBeanServer(String domain)

返回一個新物件,該物件使用指定的預設域名來實作 MBeanServer 介面,不保持對此新物件的內部參考。如果使用者指定的域為 null,則將給定的域名用作 MBean 的 ObjectName 的域部分。

不保存參考。findMBeanServer 無法返回對此 MBeanServer 物件的參考,但是沒有對該 MBeanServer 的參考時,垃圾回收器能夠移除該 MBeanServer 物件。

參數:
domain - 所創建的 MBeanServer 的預設域名。這是 MBeanServer.getDefaultDomain() 將要返回的值。
返回:
新創建的 MBeanServer。
拋出:
SecurityException - 如果有 SecurityManager 且調用者的權限不包括或隱含 MBeanServerPermission("newMBeanServer")
JMRuntimeException - 如果屬性 javax.management.builder.initial 存在,但是無法通過公共的無參數建構子實例化它所指定的類別;如果已實例化的產生器從其 newMBeanServerDelegatenewMBeanServer 方法中返回 null。
ClassCastException - 如果屬性 javax.management.builder.initial 存在並且可以被實例化,但是它的分派與 MBeanServerBuilder 不相容。

findMBeanServer

public static ArrayList<MBeanServer> findMBeanServer(String agentId)

返回已註冊 MBeanServer 物件的列表。已註冊的 MBeanServer 物件是通過某個 createMBeanServer 方法創建並且隨後未使用 releaseMBeanServer 釋放的 MBeanServer。

參數:
agentId - 要檢索的 MBeanServer 的代理標識符。如果此參數為 null,則返回此 JVM 中的所有已註冊 MBeanServer。否則只返回其 id 等於 agentId 的 MBeanServer。MBeanServer 的 id 是其委託 MBean 的 MBeanServerId 屬性。
返回:
MBeanServer 物件的列表。
拋出:
SecurityException - 如果有 SecurityManager 且調用者的權限不包括或隱含 MBeanServerPermission("findMBeanServer")

getClassLoaderRepository

public static ClassLoaderRepository getClassLoaderRepository(MBeanServer server)
返回給定 MBeanServer 使用的 ClassLoaderRepository。此方法等效於 server.getClassLoaderRepository()

參數:
server - 要檢查的 MBeanServer。從 JMX 1.2 開始,如果 servernull,則結果是 NullPointerException。此行為與 JMX 1.1 中相應實作的行為不同 - 已不再使用 null 值。
返回:
給定 MBeanServer 使用的 ClassLoaderRepository。
拋出:
SecurityException - 如果有 SecurityManager 且調用者的權限不包括或隱含 MBeanPermission("getClassLoaderRepository")
NullPointerException - 如果 server 為 null。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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