Класс MLet
- Все реализованные интерфейсы:
-
Closeable,Externalizable,Serializable,AutoCloseable,MLetMBean,MBeanRegistration
- Непосредственные известные подклассы:
PrivateMLet
public class MLet extends URLClassLoader implements MLetMBean, MBeanRegistration, Externalizable
Тег MLET имеет следующий синтаксис:
<MLET
CODE = class | OBJECT = serfile
ARCHIVE = "archiveList"
[CODEBASE = codebaseURL]
[NAME = mbeanname]
[VERSION = version]
>
[arglist]
</MLET>
где:
-
CODE =class - Этот атрибут указывает полное имя Java-класса, включая имя пакета, MBean, который нужно получить. Скомпилированный
.classфайл MBean должен находиться в одном из.jarфайлов, указанных атрибутомARCHIVE. Должен быть указан либоCODE, либоOBJECT. -
OBJECT =serfile - Этот атрибут указывает
.serфайл, содержащий сериализованное представление MBean, который нужно получить. Этот файл должен находиться в одном из.jarфайлов, указанных атрибутомARCHIVE. Если.jarфайл содержит иерархию каталогов, укажите путь к файлу внутри этой иерархии. Иначе сопоставление не будет найдено. Должен быть указан либоCODE, либоOBJECT. -
ARCHIVE = "archiveList" - Этот обязательный атрибут указывает один или несколько
.jarфайлов, содержащих MBean или другие ресурсы, используемые получаемым MBean. Один из.jarфайлов должен содержать файл, указанный атрибутомCODEилиOBJECT. Если archivelist содержит более одного файла:- Каждый файл должен быть отделён от следующего запятой (,).
- archivelist должен быть заключён в двойные кавычки.
.jarфайлы в archivelist должны храниться в каталоге, указанном URL кодовой базы. -
CODEBASE =codebaseURL - Этот необязательный атрибут указывает URL кодовой базы MBean, который нужно получить. Он определяет каталог, содержащий
.jarфайлы, указанные атрибутомARCHIVE. Укажите этот атрибут только если.jarфайлы не находятся в одном каталоге с файлом m-let. Если этот атрибут не указан, используется базовый URL файла m-let. -
NAME =mbeanname - Этот необязательный атрибут указывает имя объекта, которое будет назначено экземпляру MBean при регистрации сервисом m-let. Если mbeanname начинается с двоеточия (:), часть домена имени объекта является стандартным доменом сервера MBean, возвращаемой функцией
MBeanServer.getDefaultDomain(). -
VERSION =version - Этот необязательный атрибут указывает номер версии MBean и связанных
.jarфайлов, которые необходимо получить. Этот номер версии можно использовать для указания, что.jarфайлы загружаются с сервера для обновления тех, которые хранятся локально в кэше, при следующем загрузке файла m-let. version должен быть серией неотрицательных десятичных целых чисел, разделённых точкой. - arglist
- Этот необязательный атрибут указывает список одного или нескольких параметров для MBean, который нужно создать. Этот список описывает параметры, которые нужно передать конструктору MBean. Используйте следующий синтаксис для указания каждого элемента в arglist:
- <
ARG TYPE=argumentTypeVALUE=value> - где:
- argumentType — тип аргумента, который будет передан в качестве параметра конструктору MBean.
Тип аргументов в списке аргументов должен быть примитивным типом Java или базовым типом 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 и может использоваться для загрузки удалённых классов и jar-файлов в виртуальной машине агента.
Примечание - Загрузчик классов класса MLet использует MBeanServerFactory.getClassLoaderRepository(javax.management.MBeanServer) для загрузки классов, которые не были найдены в загруженных jar-файлах.
- С:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MLet() |
Создаёт новый MLet с родительским ClassLoader по умолчанию. |
MLet |
Создаёт новый MLet для указанных URL с родительским ClassLoader по умолчанию. |
MLet |
Создаёт новый MLet для указанных URL с родительским ClassLoader по умолчанию. |
MLet |
Создаёт новый MLet для заданных URL. |
MLet |
Создаёт новый MLet для заданных URL. |
MLet |
Создаёт новый MLet для указанных URL, родительского ClassLoader и URLStreamHandlerFactory. |
MLet |
Создаёт новый MLet для указанных URL, родительского ClassLoader и URLStreamHandlerFactory. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addURL |
Добавляет указанный URL в список URL для поиска классов и ресурсов. |
void |
addURL |
Добавляет указанный URL в список URL для поиска классов и ресурсов. |
protected URL |
check |
Этот метод должен быть переопределён при расширении этого сервиса для поддержки кэширования и версионирования. |
protected Class<?> |
findClass |
Основной метод для ClassLoader, который переопределяется. |
protected String |
findLibrary |
Возвращает абсолютный путь к нативному библиотек. |
String |
getLibraryDirectory() |
Возвращает текущую директорию, используемую загрузчиком библиотек для хранения нативных библиотек перед их загрузкой в память. |
Set<Object> |
getMBeansFromURL |
Загружает текстовый файл, содержащий теги MLET, которые определяют MBeans, которые будут добавлены в сервер MBean. |
Set<Object> |
getMBeansFromURL |
Загружает текстовый файл, содержащий теги MLET, которые определяют MBeans, которые будут добавлены в сервер MBean. |
URL[] |
getURLs() |
Возвращает путь поиска URL для загрузки классов и ресурсов. |
Class<?> |
loadClass |
Загружает класс, используя заданный ClassLoaderRepository, если класс не найден в URL этого MLet. |
void |
postDeregister() |
Разрешает m-let выполнить все необходимые операции после того, как он был дерегистрирован в сервере MBean. |
void |
postRegister |
Разрешает m-let выполнить все необходимые операции после того, как он был зарегистрирован в сервере MBean или после того, как регистрация не удалась. |
void |
preDeregister() |
Разрешает m-let выполнить необходимые операции перед тем, как он будет дерегистрирован сервером MBean. |
ObjectName |
preRegister |
Разрешает m-let выполнить необходимые операции перед тем, как он будет зарегистрирован в сервере MBean. |
void |
readExternal |
Восстанавливает содержимое этого MLet из заданного ObjectInput. |
void |
setLibraryDirectory |
Устанавливает директорию, используемую загрузчиком библиотек для хранения нативных библиотек перед их загрузкой в память. |
void |
writeExternal |
Сохраняет содержимое этого MLet в заданный ObjectOutput. |
Методы, унаследованные от класса java.net.URLClassLoader
close, definePackage, findResource, findResources, getPermissions, getResourceAsStream, newInstance, newInstance
Методы, унаследованные от класса java.security.SecureClassLoader
defineClass, defineClass
Методы, унаследованные от класса java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, унаследованные от интерфейса javax.management.loading.MLetMBean
getResource, getResourceAsStream, getResources
Подробное описание конструкторов
MLet
public MLet()
MLet
public MLet(URL[] urls)
- Параметры:
-
urls- URL-адреса для загрузки классов и ресурсов.
MLet
public MLet(URL[] urls, ClassLoader parent)
- Параметры:
-
urls- URL-адреса для загрузки классов и ресурсов. -
parent- Родительский ClassLoader для делегирования.
MLet
public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
- Параметры:
-
urls- URL-адреса для загрузки классов и ресурсов. -
parent- Родительский ClassLoader для делегирования. -
factory- URLStreamHandlerFactory для использования при создании URL-адресов.
MLet
public MLet(URL[] urls, boolean delegateToCLR)
- Параметры:
-
urls- URL-адреса для загрузки классов и ресурсов. -
delegateToCLR- true, если при поиске класса ни в родительском ClassLoader, ни в URL-адресах, MLet должен делегировать запросу вClassLoaderRepositoryсодержащего его MBeanServer.
MLet
public MLet(URL[] urls, ClassLoader parent, boolean delegateToCLR)
- Параметры:
-
urls- URL-адреса для загрузки классов и ресурсов. -
parent- Родительский ClassLoader для делегирования. -
delegateToCLR- true, если при поиске класса ни в родительском ClassLoader, ни в URL-адресах, MLet должен делегировать запросу вClassLoaderRepositoryсодержащего его MBeanServer.
MLet
public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory, boolean delegateToCLR)
- Параметры:
-
urls- URL-адреса для загрузки классов и ресурсов. -
parent- Родительский ClassLoader для делегирования. -
factory- URLStreamHandlerFactory для использования при создании URL-адресов. -
delegateToCLR- true, если при поиске класса ни в родительском ClassLoader, ни в URL-адресах, MLet должен делегировать запросу вClassLoaderRepositoryсодержащего его MBeanServer.
Подробное описание методов
addURL
public void addURL(URL url)
- Определено в:
-
addURLв интерфейсеMLetMBean - Переопределяет:
-
addURLв классеURLClassLoader - Параметры:
-
url- URL, который нужно добавить в путь поиска URL
addURL
public void addURL(String url) throws ServiceNotFoundException
- Определено в:
-
addURLв интерфейсеMLetMBean - Параметры:
-
url- URL для добавления. - Исключения:
-
ServiceNotFoundException- Указанный URL имеет неправильный формат.
getURLs
public URL[] getURLs()
- Определено в:
-
getURLsв интерфейсеMLetMBean - Переопределяет:
-
getURLsв классеURLClassLoader - Возвращает:
- путь поиска URL для загрузки классов и ресурсов.
getMBeansFromURL
public Set<Object> getMBeansFromURL(URL url) throws ServiceNotFoundException
- Определено в:
-
getMBeansFromURLв интерфейсеMLetMBean - Параметры:
-
url- URL текстового файла, который нужно загрузить как объект URL. - Возвращает:
- Множество, содержащее одну запись на каждый тег MLET в загруженном текстовом файле m-let. Каждая запись указывает либо ObjectInstance для созданного MBean, либо объект throwable (т. е. ошибку или исключение), если MBean не удалось создать.
- Исключения:
-
ServiceNotFoundException- Произошла одна из следующих ошибок: текстовый файл m-let не содержит тега MLET, текстовый файл m-let не найден, не указан обязательный атрибут тега MLET, значение url равно null. -
IllegalStateException- MBean MLet не зарегистрирован в MBeanServer.
getMBeansFromURL
public Set<Object> getMBeansFromURL(String url) throws ServiceNotFoundException
- Определено в:
-
getMBeansFromURLв интерфейсеMLetMBean - Параметры:
-
url- URL текстового файла, который нужно загрузить как строку. - Возвращает:
- Множество, содержащее одну запись на каждый тег MLET в загруженном текстовом файле m-let. Каждая запись указывает либо ObjectInstance для созданного MBean, либо объект throwable (т. е. ошибку или исключение), если MBean не удалось создать.
- Исключения:
-
ServiceNotFoundException- Произошла одна из следующих ошибок: текстовый файл m-let не содержит тега MLET, текстовый файл m-let не найден, не указан обязательный атрибут тега MLET, url имеет неправильный формат. -
IllegalStateException- MBean MLet не зарегистрирован в MBeanServer.
getLibraryDirectory
public String getLibraryDirectory()
- Определено в:
-
getLibraryDirectoryв интерфейсеMLetMBean - Возвращает:
- Текущую директорию, используемую загрузчиком библиотек.
- Исключения:
-
UnsupportedOperationException- если данная реализация не поддерживает хранение нативных библиотек таким образом. - См. также:
setLibraryDirectory
public void setLibraryDirectory(String libdir)
- Определено в:
-
setLibraryDirectoryв интерфейсеMLetMBean - Параметры:
-
libdir- Директория, используемая загрузчиком библиотек. - Исключения:
-
UnsupportedOperationException- если данная реализация не поддерживает хранение нативных библиотек таким образом. - См. также:
preRegister
public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
- Определено в:
-
preRegisterв интерфейсеMBeanRegistration - Параметры:
-
server- Сервер MBean, в котором будет зарегистрирован m-let. -
name- Имя объекта m-let. - Возвращает:
- Имя зарегистрированного m-let.
- Исключения:
-
Exception- Это исключение должно быть перехвачено сервером MBean и повторно выброшено как MBeanRegistrationException.
postRegister
public void postRegister(Boolean registrationDone)
- Specified by:
-
postRegisterв интерфейсеMBeanRegistration - Parameters:
-
registrationDone- Указывает, была ли m-let успешно зарегистрирована в сервере MBean. Значение false означает, что этап регистрации завершился неудачно.
preDeregister
public void preDeregister() throws Exception
- Specified by:
-
preDeregisterв интерфейсеMBeanRegistration - Throws:
-
Exception- Это исключение должно быть перехвачено сервером MBean и повторно выброшено как MBeanRegistrationException.
postDeregister
public void postDeregister()
- Specified by:
-
postDeregisterв интерфейсеMBeanRegistration
writeExternal
public void writeExternal(ObjectOutput out) throws IOException, UnsupportedOperationException
Сохраняет содержимое этого MLet в заданном потоке ObjectOutput. Не все реализации поддерживают этот метод. Те, что не поддерживают, бросают исключение UnsupportedOperationException. Подкласс может переопределить этот метод, чтобы поддержать его или изменить формат записываемых данных.
Формат записываемых данных не задан, но если реализация поддерживает writeExternal(java.io.ObjectOutput), она также должна поддерживать readExternal(java.io.ObjectInput) таким образом, чтобы записанные данные могли быть прочитаны последним.
- Specified by:
-
writeExternalв интерфейсеExternalizable - Parameters:
-
out- Поток для записи. - Throws:
-
IOException- Если произошла ошибка при записи. -
UnsupportedOperationException- Если эта реализация не поддерживает данную операцию.
readExternal
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException, UnsupportedOperationException
Восстанавливает содержимое этого MLet из заданного потока ObjectInput. Не все реализации поддерживают этот метод. Те, что не поддерживают, бросают исключение UnsupportedOperationException. Подкласс может переопределить этот метод, чтобы поддержать его или изменить формат считываемых данных.
Формат считываемых данных не задан, но если реализация поддерживает readExternal(java.io.ObjectInput), она также должна поддерживать writeExternal(java.io.ObjectOutput) таким образом, чтобы записанные данные могли быть прочитаны последним.
- Specified by:
-
readExternalв интерфейсеExternalizable - Parameters:
-
in- Поток для чтения. - Throws:
-
IOException- если произошла ошибка при чтении. -
ClassNotFoundException- если класс восстанавливаемого объекта не найден. -
UnsupportedOperationException- если данная реализация не поддерживает данную операцию.
loadClass
public Class<?> loadClass(String name, ClassLoaderRepository clr) throws ClassNotFoundException
Загрузить класс, используя заданный ClassLoaderRepository, если класс не найден в URL-адресах этого MLet. Заданный ClassLoaderRepository может быть null, в этом случае ClassNotFoundException возникает немедленно, если класс не найден в URL-адресах этого MLet.
- Parameters:
-
name- Имя класса, который нужно загрузить. -
clr- ClassLoaderRepository, который будет использоваться для поиска данного класса, если он не найден в этом ClassLoader. Может быть null. - Returns:
- Результирующий объект Class.
- Throws:
-
ClassNotFoundException- Указанный класс не может быть найден ни в этом ClassLoader, ни в данном ClassLoaderRepository.
findClass
protected Class<?> findClass(String name) throws ClassNotFoundException
- Overrides:
-
findClassв классеURLClassLoader - Parameters:
-
name- Имя класса. - Returns:
- Результирующий объект Class.
- Throws:
-
ClassNotFoundException- Указанный класс не найден.
findLibrary
protected String findLibrary(String libname)
OSName/OSArch/OSVersion/lib/nativelibname), например, библиотека stat на Solaris SPARC 5.7 будет искаться в JAR-файле как:
- libstat.so
- SunOS/sparc/5.7/lib/libstat.so
- stat.dll
- WindowsNT/x86/4.0/lib/stat.dll
Более конкретно, пусть 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.
- Overrides:
-
findLibraryв классеClassLoader - Parameters:
-
libname- Имя библиотеки. - Returns:
- Абсолютный путь к нативной библиотеке.
- See Also:
check
protected URL check(String version, URL codebase, String jarfile, MLetContent mlet) throws Exception
Этот метод должен быть переопределен при расширении данной службы для поддержки кеширования и версиирования. Он вызывается из getMBeansFromURL, когда версия, база кода и JAR-файл были извлечены из файла MLet, и может использоваться для проверки правильности загрузки данного MBean или для замены данного URL-адреса другим.
По умолчанию этот метод возвращает codebase без изменений.
- Parameters:
-
version- Номер версии файла.jarхранящегося локально. -
codebase- Базовый URL удалённого файла.jar. -
jarfile- Имя загружаемого файла.jar. -
mlet- ЭкземплярMLetContent, представляющий тегMLET. - Returns:
- Базу кода для используемого загруженного MBean. Возвращаемое значение не должно быть null.
- Throws:
-
Exception- если MBean не должен загружаться по какой-либо причине. Исключение будет добавлено в набор, возвращаемыйgetMBeansFromURL.
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.management/javax/management/loading/MLet.html