|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
javax.management.loading.MLet
public class MLet
允許實例化和註冊來自遠端 URL 的 MBean 伺服器中一個或幾個 MBean。M-let 是管理 applet 的捷徑。m-let 服務通過載入一個 m-let 文本檔案來實作此功能,該文本檔案指定了要獲取的 MBean 上的資訊。每個 MBean 上的資訊都是在某個標記的單個實例中指定的,該標記稱為 MLET 標記。m-let 文本檔案的位置由 URL 指定。
MLET 標記具有以下語法:
<MLET
CODE = class | OBJECT = serfile
ARCHIVE = "archiveList"
[CODEBASE = codebaseURL]
[NAME = mbeanname]
[VERSION = version]
>
[arglist]
</MLET>
其中:
CODE = class.class 檔案必須包含在 ARCHIVE 屬性指定的 .jar 檔案中。CODE 或 OBJECT 必須存在。
OBJECT = serfile.ser 檔案,該檔案包含要獲取的 MBean 的序列化表示形式。此檔案必須包含在 ARCHIVE 屬性指定的 .jar 檔案中。如果 .jar 檔案包含目錄層次結構,則需要指定此層次結構中的檔案路徑。否則將找不到比對項。CODE 或 OBJECT 必須存在。
ARCHIVE = "archiveList".jar 檔案,這些檔案包含要獲取的 MBean 使用的 MBean 或其他資源。.jar 檔案之一必須包含 CODE 或 OBJECT 屬性所指定的檔案。如果 archivelist 套件含多個檔案:
.jar 檔案必須存儲在程式碼基 URL 指定的目錄中。
CODEBASE = codebaseURLARCHIVE 指定的 .jar 檔案的目錄。僅當 .jar 檔案與 m-let 文本檔案不在同一目錄中時,指定此屬性。如果不指定此屬性,則使用 m-let 文本檔案的基本 URL。
NAME = mbeannameMBeanServer.getDefaultDomain() 返回。
VERSION = version.jar 檔案。此版本號可用於指定從伺服器載入 .jar 檔案,以便在下次調用 m-let 文本檔案時更新存儲在本地快取記憶體中的檔案。version 必須是一系列非負的十進制整數,每個整數都通過句點與它前面的整數隔開。
ARG TYPE=argumentType VALUE=value>
參數列表中的參數型別應為 Java 基本型別(java.lang.Boolean、java.lang.Byte、 java.lang.Short、java.lang.Long、java.lang.Integer、java.lang.Float、java.lang.Double 和 java.lang.String)。
m-let 服務擴展了 java.net.URLClassLoader,可以用它載入代理的 VM 中的遠端類別和 jar 檔案。
注意 - MLet 類別載入器使用 MBeanServerFactory.getClassLoaderRepository(javax.management.MBeanServer) 來載入在已載入 jar 檔案中找不到的類別。
| 建構子摘要 | |
|---|---|
MLet()
使用預設的代理父類別載入器建構新的 MLet。 |
|
MLet(URL[] urls)
使用預設的代理父類別載入器為指定的 URL 建構新的 MLet。 |
|
MLet(URL[] urls,
boolean delegateToCLR)
使用預設的代理父類別載入器為指定的 URL 建構新的 MLet。 |
|
MLet(URL[] urls,
ClassLoader parent)
為給定的 URL 建構新的 MLet。 |
|
MLet(URL[] urls,
ClassLoader parent,
boolean delegateToCLR)
為給定的 URL 建構新的 MLet。 |
|
MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory)
為指定的 URL、父類別載入器和 URLStreamHandlerFactory 建構新的 MLet。 |
|
MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory,
boolean delegateToCLR)
為指定的 URL、父類別載入器和 URLStreamHandlerFactory 建構新的 MLet。 |
|
| 方法摘要 | |
|---|---|
void |
addURL(String url)
將指定的 URL 追加到 URL 列表中,以便搜尋類別和資源。 |
void |
addURL(URL url)
將指定的 URL 追加到 URL 列表中,以便搜尋類別和資源。 |
protected URL |
check(String version,
URL codebase,
String jarfile,
MLetContent mlet)
當擴展此服務來支持快取記憶體和版本控制時,要覆寫此方法。 |
protected Class<?> |
findClass(String name)
這是要重新定義的類別載入器的主要方法。 |
protected String |
findLibrary(String libname)
返回本機資源庫的絕對路徑名稱。 |
String |
getLibraryDirectory()
獲取資源庫載入器在將本機資源庫載入到記憶體中之前用於存儲這些本機資源庫的當前目錄。 |
Set<Object> |
getMBeansFromURL(String url)
載入一個套件含 MLET 標記的文本檔案,這些標記定義了要添加到 MBean 伺服器的 MBean。 |
Set<Object> |
getMBeansFromURL(URL url)
載入一個套件含 MLET 標記的文本檔案,這些標記定義了要添加到 MBean 伺服器的 MBean。 |
URL[] |
getURLs()
返回用於載入類別和資源的 URL 搜尋路徑。 |
Class<?> |
loadClass(String name,
ClassLoaderRepository clr)
如果在此 MLet 的 URL 中找不到某個類別,則使用給定的 ClassLoaderRepository 載入該類別。 |
void |
postDeregister()
允許 m-let 在已從 MBean 伺服器註銷之後執行任何所需要的操作。 |
void |
postRegister(Boolean registrationDone)
允許 m-let 在已註冊到 MBean 伺服器之後或註冊失敗之後執行任何所需要的操作。 |
void |
preDeregister()
允許 m-let 在由 MBean 伺服器註銷之前執行任何所需要的操作。 |
ObjectName |
preRegister(MBeanServer server,
ObjectName name)
允許在將 m-let 註冊到 MBean 之前執行任何所需要的操作。 |
void |
readExternal(ObjectInput in)
從給定的 ObjectInput 恢復此 MLet 的內容。 |
void |
setLibraryDirectory(String libdir)
設置在將本機資源庫載入到記憶體中之前資源庫載入器用來存儲這些本機資源庫的目錄。 |
void |
writeExternal(ObjectOutput out)
將此 MLet 的內容保存到給定的 ObjectOutput。 |
| 從類別 java.net.URLClassLoader 繼承的方法 |
|---|
definePackage, findResource, findResources, getPermissions, newInstance, newInstance |
| 從類別 java.security.SecureClassLoader 繼承的方法 |
|---|
defineClass, defineClass |
| 從類別 java.lang.Object 繼承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 從介面 javax.management.loading.MLetMBean 繼承的方法 |
|---|
getResource, getResourceAsStream, getResources |
| 建構子詳細資訊 |
|---|
public MLet()
public MLet(URL[] urls)
urls - 從其位置載入類別和資源的 URL。
public MLet(URL[] urls,
ClassLoader parent)
urls - 從其指示的位置載入類別和資源的 URL。parent - 代理的父類別載入器。
public MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory)
urls - 從其指示的位置載入類別和資源的 URL。parent - 代理的父類別載入器。factory - 創建 URL 時要使用的 URLStreamHandlerFactory。
public MLet(URL[] urls,
boolean delegateToCLR)
urls - 從其指示的位置載入類別和資源的 URL。delegateToCLR - 如果該參數為 true,則當在父類別載入器或 URL 中均未找到某個類別時,MLet 應該委託給該類別的套件含 MBeanServer 的 ClassLoaderRepository。
public MLet(URL[] urls,
ClassLoader parent,
boolean delegateToCLR)
urls - 從其指示的位置載入類別和資源的 URL。parent - 代理的父類別載入器。delegateToCLR - 如果該參數為 true,則當在父類別載入器或 URL 中均未找到某個類別時,MLet 應該委託給該類別的套件含 MBeanServer 的 ClassLoaderRepository。
public MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory,
boolean delegateToCLR)
urls - 從其指示的位置載入類別和資源的 URL。parent - 代理的父類別載入器。factory - 創建 URL 時要使用的 URLStreamHandlerFactory。delegateToCLR - 如果該參數為 true,則當在父類別載入器或 URL 中均未找到某個類別時,MLet 應該委託給該類別的套件含 MBeanServer 的 ClassLoaderRepository。| 方法詳細資訊 |
|---|
public void addURL(URL url)
MLetMBean 中的 addURLURLClassLoader 中的 addURLurl - 將添加到 URL 搜尋路徑中的 URL
public void addURL(String url)
throws ServiceNotFoundException
MLetMBean 中的 addURLurl - 要添加的 URL。
ServiceNotFoundException - 如果指定的 URL 錯誤。public URL[] getURLs()
MLetMBean 中的 getURLsURLClassLoader 中的 getURLs
public Set<Object> getMBeansFromURL(URL url)
throws ServiceNotFoundException
MLetMBean 中的 getMBeansFromURLurl - 以 URL 物件形式載入的文本檔案的 URL。
ServiceNotFoundException - 如果發生以下錯誤之一:m-let 文本檔案不包含 MLET 標記;未找到 m-let 文本檔案;未指定 MLET 標記的必需的屬性;url 的值為 null。
IllegalStateException - 如果沒有在 MBeanServer 中註冊 MLet MBean。
public Set<Object> getMBeansFromURL(String url)
throws ServiceNotFoundException
MLetMBean 中的 getMBeansFromURLurl - 以 String 物件形式載入的文本檔案的 URL。
ServiceNotFoundException - 如果發生以下錯誤之一:m-let 文本檔案不包含 MLET 標記;未找到 m-let 文本檔案;未指定 MLET 標記的必需的屬性,url 錯誤。
IllegalStateException - 如果沒有在 MBeanServer 中註冊 MLet MBean。public String getLibraryDirectory()
MLetMBean 中的 getLibraryDirectoryUnsupportedOperationException - 如果此實作不支持以這種方式存儲本機資源庫。setLibraryDirectory(java.lang.String)public void setLibraryDirectory(String libdir)
MLetMBean 中的 setLibraryDirectorylibdir - 資源庫載入器使用的目錄。
UnsupportedOperationException - 如果此實作不支持以這種方式存儲本機資源庫。getLibraryDirectory()
public ObjectName preRegister(MBeanServer server,
ObjectName name)
throws Exception
MBeanRegistration 中的 preRegisterserver - 將在其中註冊 m-let 的 MBean 伺服器。name - m-let 的物件名稱。
Exception - 此異常應由 MBean 伺服器捕獲,並以 MBeanRegistrationException 的形式重新拋出。public void postRegister(Boolean registrationDone)
MBeanRegistration 中的 postRegisterregistrationDone - 指示 m-let 是否已經成功註冊到 MBean 伺服器。值 false 意味著註冊失敗。
public void preDeregister()
throws Exception
MBeanRegistration 中的 preDeregisterjava.langException - 此異常應由 MBean 伺服器捕獲,並以 MBeanRegistrationException 的形式重新拋出它。
Exception - MBean 伺服器會捕捉此異常並以 MBeanRegistrationException 的形式重新拋出。public void postDeregister()
MBeanRegistration 中的 postDeregister
public void writeExternal(ObjectOutput out)
throws IOException,
UnsupportedOperationException
將此 MLet 的內容保存到給定的 ObjectOutput。不是所有的實作都支持此方法。不支持此方法的實作將拋出 UnsupportedOperationException。子類別可以覆寫此方法以支持它或更改寫入資料的格式。
寫入資料的格式是未指定的,但如果某個實作支持 writeExternal(java.io.ObjectOutput),則它必須也支持 readExternal(java.io.ObjectInput),以便後者可以讀取前者所寫入的內容。
Externalizable 中的 writeExternalout - 要寫入的物件輸出串流。
IOException - 如果在寫入時發生問題。
UnsupportedOperationException - 如果此實作不支持此操作。
public void readExternal(ObjectInput in)
throws IOException,
ClassNotFoundException,
UnsupportedOperationException
從給定的 ObjectInput 恢復此 MLet 的內容。不是所有的實作都支持此方法。不支持此方法的實作將拋出 UnsupportedOperationException。子類別可以覆寫此方法以支持它或更改讀取資料的格式。
讀取資料的格式是未指定的,但如果某個實作支持 readExternal(java.io.ObjectInput),則它必須也支持 writeExternal(java.io.ObjectOutput),以便前者可以讀取後者所寫入的內容。
Externalizable 中的 readExternalin - 要從中讀取的物件輸入串流。
IOException - 如果在讀取時出現問題。
ClassNotFoundException - 如果找不到要恢復的物件的類別。
UnsupportedOperationException - 如果此實作不支持此操作。
public Class<?> loadClass(String name,
ClassLoaderRepository clr)
throws ClassNotFoundException
如果在此 MLet 的 URL 中找不到某個類別,則使用給定的 ClassLoaderRepository 載入該類別。給定的 ClassLoaderRepository 可以為 null,在這種情況下, 如果在此 MLet 的 URL 中找不到該類別,則立即發生 ClassNotFoundException。
name - 想要載入的類別名稱。clr - 在此類別載入器中未找到給定類別時用於搜尋給定類別的 ClassLoaderRepository。可以為 null。
ClassNotFoundException - 如果在此類別載入器和給定的 ClassLoaderRepository 中均找不到指定的類別。
protected Class<?> findClass(String name)
throws ClassNotFoundException
URLClassLoader 中的 findClassname - 類別的名稱。
ClassNotFoundException - 如果找不到指定的類別。protected String findLibrary(String libname)
OSName/OSArch/OSVersion/lib/nativelibname)來搜尋,即
Solaris SPARC 5.7 上的資源庫 stat 將按照以下方式在 JAR 檔案中進行搜尋:
更明確地說,可以設 nativelibname 為 System.mapLibraryName(libname) 的結果。這樣將在 JAR 檔案中依次搜尋以下名稱:
nativelibname
<os.name>/<os.arch>/<os.version>/lib/nativelibname
其中 <X> 表示 System.getProperty(X)(結果中不帶空格);/ 代表檔案分隔符 (File.separator)。
如果此方法返回 null,即在任何使用此類別載入器載入的 JAR 檔案中都找不到資源庫,則 VM 根據指定為 java.library.path 屬性的路徑搜尋資源庫。
ClassLoader 中的 findLibrarylibname - 資源庫名稱。
System.loadLibrary(String),
System.mapLibraryName(String)
protected URL check(String version,
URL codebase,
String jarfile,
MLetContent mlet)
throws Exception
當擴展此服務來支持快取記憶體和版本控制時,要覆寫此方法。當已經從 MLet 檔案提取出版本、程式碼基和 jarfile 時,從 getMBeansFromURL 調用此方法,可以用它驗證是否可以正確載入給定的 MBean,或者用不同的 URL 替換給定的 URL。
此方法的預設實作返回未更改的 codebase。
version - 本地存儲的 .jar 檔案的版本號。codebase - 遠端 .jar 檔案的基本 URL。jarfile - 要載入的 .jar 檔案名稱。mlet - 表示 MLET 標記的 MLetContent 實例。
Exception - 如果由於某種原因未載入 MBean。該異常將被添加到 getMBeansFromURL 返回的集合中。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。