|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface ClassLoaderRepository
此介面的實例用於保持在 MBean Server 中註冊的 ClassLoader 的列表。它們提供了使用註冊的 ClassLoader 來載入類別所必需的方法。
ClassLoaderRepository
中的首個 ClassLoader 始終是 MBean Server 本身的 ClassLoader。
當在 MBean Server 中註冊 MBean 時,如果它是 ClassLoader
的一個子類別,並且它不實作 PrivateClassLoader
介面,那麼將它添加到 MBean Server 的 ClassLoaderRepository
的末尾。如果以後從 MBean Server 註銷它,則它將從 ClassLoaderRepository
中移除。
ClassLoaderRepository
中的 MBean 順序是很重要的。對於 ClassLoaderRepository
中的任意兩個 MBean X 和 Y,如果在 Y 的註冊開始之前已完成 X 的註冊,則 X 必須出現在 Y 的前面。如果 X 和 Y 是同時註冊的,則它們的順序是不確定的。註冊 MBean 對應於調用 MBeanServer.registerMBean(java.lang.Object, javax.management.ObjectName)
或某個 MBeanServer
.createMBean
方法。
MBeanServerFactory
方法摘要 | |
---|---|
Class<?> |
loadClass(String className)
通過類別載入器列表載入給定的類別名稱。 |
Class<?> |
loadClassBefore(ClassLoader stop,
String className)
通過類別載入器列表載入給定的類別名稱,在某個給定的類別載入器處停止。 |
Class<?> |
loadClassWithout(ClassLoader exclude,
String className)
通過類別載入器列表載入給定的類別名稱,不包括某個給定的類別載入器。 |
方法詳細資訊 |
---|
Class<?> loadClass(String className) throws ClassNotFoundException
通過類別載入器列表載入給定的類別名稱。依次請求 ClassLoaderRepository 的每個 ClassLoader 通過其 ClassLoader.loadClass(String)
方法來載入類別。如果它成功返回一個 Class
物件,則該物件就是此方法的結果。如果拋出 ClassNotFoundException
,則繼續搜尋下一個 ClassLoader。如果拋出另一個異常,則從此方法傳播該異常。如果到達列表的末尾,則拋出 ClassNotFoundException
。
className
- 要被載入的類別名稱。
ClassNotFoundException
- 如果找不到指定的類別。Class<?> loadClassWithout(ClassLoader exclude, String className) throws ClassNotFoundException
通過類別載入器列表載入給定的類別名稱,不包括某個給定的類別載入器。依次請求 ClassLoaderRepository 的每個 ClassLoader(除 exclude
之外)通過其 ClassLoader.loadClass(String)
方法來載入類別。如果它成功返回一個 Class
物件,則該物件就是此方法的結果。如果拋出 ClassNotFoundException
,則繼續搜尋下一個 ClassLoader。如果拋出另一個異常,則從此方法傳播該異常。如果到達列表的末尾,則拋出 ClassNotFoundException
。
注意,如果 ClassLoaderRepository 中的某個 ClassLoader 從其 loadClass
方法調用此方法,那麼如果 ClassLoaderRepository 中的另一個 ClassLoader 同時也在執行相同操作,則該 ClassLoader 將發生死鎖。推薦使用 loadClassBefore(java.lang.ClassLoader, java.lang.String)
方法以避免死鎖風險。
className
- 要被載入的類別名稱。exclude
- 不包括的類別載入器。可能為 null,在這種情況下此方法等效於 loadClass(className)
。
ClassNotFoundException
- 如果找不到指定的類別。Class<?> loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException
通過類別載入器列表載入給定的類別名稱,在某個給定的類別載入器處停止。依次請求 ClassLoaderRepository 的每個 ClassLoader 通過其 ClassLoader.loadClass(String)
方法來載入類別。如果它成功返回一個 Class
物件,則該物件就是此方法的結果。如果拋出 ClassNotFoundException
,則繼續搜尋下一個 ClassLoader。如果拋出另一個異常,則從此方法傳播該異常。如果搜尋到達 stop
或列表的末尾,則拋出 ClassNotFoundException
。
通常從 stop
處的 loadClass
方法調用此方法,以參考 ClassLoaderRepository
中出現在它之前的的載入器。一旦遇到 stop
,搜尋立即停止,這樣就避免了可能出現的共時類別載入死鎖。
className
- 要被載入的類別名稱。stop
- 停止處的類別載入器。可能為 null,在這種情況下此方法等效於 loadClass(className)
。
ClassNotFoundException
- 如果找不到指定的類別。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。