Класс MLet
- Все реализованные интерфейсы:
-
Closeable,Externalizable,Serializable,AutoCloseable,MLetMBean,MBeanRegistration
- Непосредственные известные подклассы:
PrivateMLet
@Deprecated(since="20", forRemoval=true) 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() |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Создаёт новый MLet с родительским ClassLoader по умолчанию. |
MLet |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Создаёт новый MLet для указанных URL-адресов с родительским ClassLoader по умолчанию. |
MLet |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Создаёт новый MLet для указанных URL-адресов с родительским ClassLoader по умолчанию. |
MLet |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Создаёт новый MLet для заданных URL-адресов. |
MLet |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Создаёт новый MLet для заданных URL-адресов. |
MLet |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Создаёт новый MLet для указанных URL-адресов, родительского ClassLoader и URLStreamHandlerFactory. |
MLet |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Создаёт новый MLet для указанных URL-адресов, родительского ClassLoader и URLStreamHandlerFactory. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addURL |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Добавляет указанный URL-адрес в список URL-адресов для поиска классов и ресурсов. |
void |
addURL |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Добавляет указанный URL-адрес в список URL-адресов для поиска классов и ресурсов. |
protected URL |
check |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Этот метод должен быть переопределён при расширении данного сервиса для поддержки кэширования и версионирования. |
protected Class |
findClass |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Основной метод для class loader, который переопределяется. |
protected String |
findLibrary |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Возвращает абсолютный путь к файлу нативной библиотеки. |
String |
getLibraryDirectory() |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Получает текущий каталог, используемый загрузчиком библиотек для хранения нативных библиотек перед их загрузкой в память. |
Set |
getMBeansFromURL |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Загружает текстовый файл с тегами MLET, определяющими MBeans, которые должны быть добавлены в сервер MBean. |
Set |
getMBeansFromURL |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Загружает текстовый файл с тегами MLET, определяющими MBeans, которые должны быть добавлены в сервер MBean. |
URL[] |
getURLs() |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Возвращает путь поиска URL-адресов для загрузки классов и ресурсов. |
Class |
loadClass |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Загружает класс, используя заданный ClassLoaderRepository, если класс не найден в URL-адресах данного MLet. |
void |
postDeregister() |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Позволяет m-let выполнить все необходимые операции после того, как он был аннулирован на сервере MBean. |
void |
postRegister |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Позволяет m-let выполнить все необходимые операции после того, как он был зарегистрирован на сервере MBean или после того, как регистрация не удалась. |
void |
preDeregister() |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Позволяет m-let выполнить все необходимые операции перед тем, как он будет аннулирован сервером MBean. |
ObjectName |
preRegister |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Позволяет m-let выполнить все необходимые операции перед тем, как он будет зарегистрирован на сервере MBean. |
void |
readExternal |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Восстанавливает содержимое этого MLet из заданного ObjectInput. |
void |
setLibraryDirectory |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Устанавливает каталог, используемый загрузчиком библиотек для хранения нативных библиотек перед их загрузкой в память. |
void |
writeExternal |
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии. Сохраняет содержимое этого 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-адрес в путь поиска
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- MLet MBean не зарегистрирован в 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- MLet MBean не зарегистрирован в MBeanServer.
getLibraryDirectory
public String getLibraryDirectory()
- Specified by:
-
getLibraryDirectoryin interfaceMLetMBean - Returns:
- Текущую директорию, используемую загрузчиком библиотек.
- Throws:
-
UnsupportedOperationException- если эта реализация не поддерживает хранение нативных библиотек таким образом. - See Also:
setLibraryDirectory
public void setLibraryDirectory(String libdir)
- Specified by:
-
setLibraryDirectoryin interfaceMLetMBean - Parameters:
-
libdir- Директория, используемая загрузчиком библиотек. - Throws:
-
UnsupportedOperationException- если эта реализация не поддерживает хранение нативных библиотек таким образом. - See Also:
preRegister
public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
- Specified by:
-
preRegisterin interfaceMBeanRegistration - Parameters:
-
server- Сервер MBean, в котором будет зарегистрирован m-лет. -
name- Имя объекта m-лета. - Returns:
- Имя зарегистрированного m-лета.
- Throws:
-
Exception- Эта исключение должно быть перехвачено сервером MBean и повторно выброшено как MBeanRegistrationException.
postRegister
public void postRegister(Boolean registrationDone)
- Specified by:
-
postRegisterin interfaceMBeanRegistration - Parameters:
-
registrationDone- Указывает, была ли m-лет успешно зарегистрирована в сервере MBean. Значение false означает, что фаза регистрации завершилась неудачей.
preDeregister
public void preDeregister() throws Exception
- Specified by:
-
preDeregisterin interfaceMBeanRegistration - Throws:
-
Exception- Это исключение должно быть перехвачено сервером MBean и повторно выброшено как MBeanRegistrationException.
postDeregister
public void postDeregister()
- Specified by:
-
postDeregisterin interfaceMBeanRegistration
writeExternal
public void writeExternal(ObjectOutput out) throws IOException, UnsupportedOperationException
Сохраняет содержимое этого MLet в указанный ObjectOutput. Не все реализации поддерживают этот метод. Те, что не поддерживают, выбрасывают UnsupportedOperationException. Подкласс может переопределить этот метод, чтобы поддержать его или изменить формат записываемых данных.
Формат записываемых данных не определен, но если реализация поддерживает writeExternal(java.io.ObjectOutput), она также должна поддерживать readExternal(java.io.ObjectInput) таким образом, чтобы то, что записывается первым, могло быть считано вторым.
- Specified by:
-
writeExternalin interfaceExternalizable - 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:
-
readExternalin interfaceExternalizable - 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:
-
findClassin classURLClassLoader - 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, загруженных с помощью этого загрузчика классов, JVM ищет библиотеку по пути, указанному в свойстве java.library.path.
- Overrides:
-
findLibraryв классеClassLoader - Параметры:
-
libname- Имя библиотеки. - Возвращает:
- Абсолютный путь к нативной библиотеке.
- См. также:
check
protected URL check(String version, URL codebase, String jarfile, MLetContent mlet) throws Exception
Этот метод необходимо переопределить при расширении этой службы для поддержки кэширования и версионирования. Он вызывается из getMBeansFromURL, когда версия, базовая директория и файл JAR извлечены из файла MLet и могут быть использованы для проверки возможности загрузки данного MBean или для замены данного URL на другой.
По умолчанию этот метод возвращает codebase без изменений.
- Параметры:
-
version- Номер версии файла.jarхранящегося локально. -
codebase- Базовый URL удаленного файла.jar. -
jarfile- Имя файла.jar, который необходимо загрузить. -
mlet- ЭкземплярMLetContent, представляющий тегMLET. - Возвращает:
- Базовую директорию для использования при загрузке MBean. Возвращаемое значение не должно быть null.
- Исключения:
-
Exception- если MBean не должен загружаться по какой-либо причине. Исключение будет добавлено в набор, возвращаемыйgetMBeansFromURL.
© 1993, 2023, 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/21/docs/api/java.management/javax/management/loading/MLet.html