Класс MLet
- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- java.net.URLClassLoader
-
- javax.management.loading.MLet
- Все реализуемые интерфейсы:
-
Closeable,Externalizable,Serializable,AutoCloseable,MLetMBean,MBeanRegistration
- Непосредственные известные подклассы:
PrivateMLet
public class MLet extends URLClassLoader implements MLetMBean, MBeanRegistration, Externalizable
Позволяет создать и зарегистрировать один или несколько MBean в сервере MBean, полученных из удаленного URL. М-лет — это сокращение от «management 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 - Этот атрибут указывает полное имя Java-класса MBean, включая имя пакета. Скомпилированный
.classфайл MBean должен быть содержимым одного из файлов.jar, указанных в атрибутеARCHIVE. Должен быть присутствующим либоCODE, либоOBJECT. -
OBJECT =serfile - Этот атрибут указывает файл
.ser, содержащий сериализованное представление получаемого MBean. Этот файл должен быть содержимым одного из файлов.jar, указанных в атрибутеARCHIVE. Если файл.jarсодержит иерархию каталогов, укажите путь к файлу в этой иерархии. В противном случае соответствие не будет найдено. Должен быть присутствующим либоCODE, либоOBJECT. -
ARCHIVE = "archiveList" - Этот обязательный атрибут указывает один или несколько файлов
.jarсодержащих MBeans или другие ресурсы, используемые получаемым 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, возвращаемый методом
MBeanServerConnection.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 с использованием родительского класса загрузчика по умолчанию. |
MLet(URL[] urls) | Создает новый MLet для указанных URL с использованием родительского класса загрузчика по умолчанию. |
MLet(URL[] urls,
boolean delegateToCLR) | Создает новый MLet для указанных URL с использованием родительского класса загрузчика по умолчанию. |
MLet(URL[] urls,
ClassLoader parent) | Создает новый MLet для указанных URL. |
MLet(URL[] urls,
ClassLoader parent,
boolean delegateToCLR) | Создает новый MLet для указанных URL. |
MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory) | Создает новый MLet для указанных URL, родительского класса загрузчика и URLStreamHandlerFactory. |
MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory,
boolean delegateToCLR) | Создает новый MLet для указанных URL, родительского класса загрузчика и URLStreamHandlerFactory. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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, которые определяют MBeans, которые необходимо добавить в сервер MBean. |
Set<Object> |
getMBeansFromURL(URL url) |
Загружает текстовый файл, содержащий теги MLET, которые определяют MBeans, которые необходимо добавить в сервер MBean. |
URL[] |
getURLs() |
Возвращает путь поиска URL для загрузки классов и ресурсов. |
Class<?> |
loadClass(String name,
ClassLoaderRepository clr) |
Загружает класс, используя заданный |
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) |
Восстанавливает содержимое этого MLet из заданного |
void |
setLibraryDirectory(String libdir) |
Устанавливает директорию, используемую загрузчиком библиотек для хранения нативных библиотек перед их загрузкой в память. |
void |
writeExternal(ObjectOutput out) |
Сохраняет содержимое этого MLet в заданном |
Методы, объявленные в классе 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, используя родительский загрузчик делегирования по умолчанию.
MLet
public MLet(URL[] urls)
Создаёт новый MLet для указанных URL, используя родительский загрузчик делегирования по умолчанию. URL будут просматриваться в указанном порядке для классов и ресурсов после первой проверки в родительском загрузчике классов.
- Параметры:
-
urls- URL, с которых загружать классы и ресурсы.
MLet
public MLet(URL[] urls,
ClassLoader parent)
Создаёт новый MLet для заданных URL. URL будут просматриваться в указанном порядке для классов и ресурсов после первой проверки в заданном родительском загрузчике классов. Родительский аргумент будет использоваться в качестве родительского загрузчика классов для делегирования.
- Параметры:
-
urls- URL, с которых загружать классы и ресурсы. -
parent- Родительский загрузчик классов для делегирования.
MLet
public MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory)
Создаёт новый MLet для указанных URL, родительского загрузчика классов и URLStreamHandlerFactory. Родительский аргумент будет использоваться в качестве родительского загрузчика классов для делегирования. Аргумент factory будет использоваться в качестве фабрики обработчиков потоков для получения обработчиков протоколов при создании новых URL.
- Параметры:
-
urls- URL, с которых загружать классы и ресурсы. -
parent- Родительский загрузчик классов для делегирования. -
factory- URLStreamHandlerFactory для использования при создании URL.
MLet
public MLet(URL[] urls,
boolean delegateToCLR)
Создаёт новый MLet для указанных URL, используя родительский загрузчик делегирования по умолчанию. URL будут просматриваться в указанном порядке для классов и ресурсов после первой проверки в родительском загрузчике классов.
- Параметры:
-
urls- URL, с которых загружать классы и ресурсы. -
delegateToCLR- true, если при отсутствии класса в родительском ClassLoader или URL, MLet должен делегировать загрузку классуClassLoaderRepositoryсодержащего его сервера MBean.
MLet
public MLet(URL[] urls,
ClassLoader parent,
boolean delegateToCLR)
Создаёт новый MLet для заданных URL. URL будут просматриваться в указанном порядке для классов и ресурсов после первой проверки в заданном родительском загрузчике классов. Родительский аргумент будет использоваться в качестве родительского загрузчика классов для делегирования.
- Параметры:
-
urls- URL, с которых загружать классы и ресурсы. -
parent- Родительский загрузчик классов для делегирования. -
delegateToCLR- true, если при отсутствии класса в родительском ClassLoader или URL, MLet должен делегировать загрузку классуClassLoaderRepositoryсодержащего его сервера MBean.
MLet
public MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory,
boolean delegateToCLR)
Создаёт новый MLet для указанных URL, родительского загрузчика классов и URLStreamHandlerFactory. Родительский аргумент будет использоваться в качестве родительского загрузчика классов для делегирования. Аргумент factory будет использоваться в качестве фабрики обработчиков потоков для получения обработчиков протоколов при создании новых URL.
- Параметры:
-
urls- URL, с которых загружать классы и ресурсы. -
parent- Родительский загрузчик классов для делегирования. -
factory- URLStreamHandlerFactory для использования при создании URL. -
delegateToCLR- true, если при отсутствии класса в родительском ClassLoader или URL, MLet должен делегировать загрузку классуClassLoaderRepositoryсодержащего его сервера MBean.
Методы
addURL
public void addURL(URL url)
Добавляет указанный URL в список URL для поиска классов и ресурсов.
- Определено в:
-
addURLв интерфейсеMLetMBean - Переопределяет:
-
addURLв классеURLClassLoader - Параметры:
-
url- URL, который нужно добавить в путь поиска URL
addURL
public void addURL(String url)
throws ServiceNotFoundException Добавляет указанный URL в список URL для поиска классов и ресурсов.
- Определено в:
-
addURLв интерфейсеMLetMBean - Параметры:
-
url- добавляемый URL. - Исключения:
-
ServiceNotFoundException- Указанный URL имеет неправильный формат.
getURLs
public URL[] getURLs()
Возвращает путь поиска URL для загрузки классов и ресурсов. В него входит исходный список URL, указанный в конструкторе, а также любые URL, добавленные позднее методом addURL().
- Определено в:
-
getURLsв интерфейсеMLetMBean - Переопределяет:
-
getURLsв классеURLClassLoader - Возвращает:
- путь поиска URL для загрузки классов и ресурсов.
getMBeansFromURL
public Set<Object> getMBeansFromURL(URL url)
throws ServiceNotFoundException Загружает текстовый файл, содержащий теги MLET, которые определяют MBeans, которые нужно добавить в сервер MBean. Путь к текстовому файлу задаётся URL. MBeans, указанные в файле MLET, будут созданы и зарегистрированы на сервере MBean.
- Определено в:
-
getMBeansFromURLв интерфейсеMLetMBean - Параметры:
-
url- URL текстового файла, который нужно загрузить как объект URL. - Возвращает:
- Множество, содержащее по одному элементу на каждый тег MLET в загруженном текстовом файле m-let. Каждый элемент указывает либо ObjectInstance для созданного MBean, либо объект throwable (т. е. ошибку или исключение), если MBean не удалось создать.
- Исключения:
-
ServiceNotFoundException- Возникла одна из следующих ошибок: файл m-let не содержит тега MLET, файл m-let не найден, не задан обязательный атрибут тега MLET, значение url равно null. -
IllegalStateException- MLet MBean не зарегистрирован на сервере MBean.
getMBeansFromURL
public Set<Object> getMBeansFromURL(String url)
throws ServiceNotFoundException Загружает текстовый файл, содержащий теги MLET, которые определяют MBeans, которые нужно добавить в сервер MBean. Путь к текстовому файлу задаётся URL. MBeans, указанные в файле MLET, будут созданы и зарегистрированы на сервере MBean.
- Определено в:
-
getMBeansFromURLв интерфейсеMLetMBean - Параметры:
-
url- URL текстового файла, который нужно загрузить как строку. - Возвращает:
- Множество, содержащее по одному элементу на каждый тег MLET в загруженном текстовом файле m-let. Каждый элемент указывает либо ObjectInstance для созданного MBean, либо объект throwable (т. е. ошибку или исключение), если MBean не удалось создать.
- Исключения:
-
ServiceNotFoundException- Возникла одна из следующих ошибок: файл m-let не содержит тега MLET, файл m-let не найден, не задан обязательный атрибут тега MLET, url имеет неправильный формат. -
IllegalStateException- MLet MBean не зарегистрирован на сервере MBean.
getLibraryDirectory
public String getLibraryDirectory()
Возвращает текущую директорию, используемую загрузчиком библиотек для хранения нативных библиотек перед их загрузкой в память.
- Определено в:
-
getLibraryDirectoryв интерфейсеMLetMBean - Возвращает:
- Текущую директорию, используемую загрузчиком библиотек.
- Исключения:
-
UnsupportedOperationException- если эта реализация не поддерживает хранение нативных библиотек таким образом. - См. также:
setLibraryDirectory(java.lang.String)
setLibraryDirectory
public void setLibraryDirectory(String libdir)
Устанавливает директорию, используемую загрузчиком библиотек для хранения нативных библиотек перед их загрузкой в память.
- Определено в:
-
setLibraryDirectoryв интерфейсеMLetMBean - Параметры:
-
libdir- Директория, используемая загрузчиком библиотек. - Исключения:
-
UnsupportedOperationException- если эта реализация не поддерживает хранение нативных библиотек таким образом. - См. также:
getLibraryDirectory()
preRegister
public ObjectName preRegister(MBeanServer server,
ObjectName name)
throws Exception Позволяет m-let выполнить любые операции, необходимые перед регистрацией на сервере MBean. Если ObjectName равно null, m-let предоставляет имя по умолчанию для регистрации <defaultDomain>:type=MLet
- Определено в:
-
preRegisterв интерфейсеMBeanRegistration - Параметры:
-
server- Сервер MBean, на котором будет зарегистрирован m-let. -
name- Имя объекта m-let. - Возвращает:
- Имя зарегистрированного m-let.
- Исключения:
-
Exception- Это исключение должно быть поймано сервером MBean и переброшено как MBeanRegistrationException.
postRegister
public void postRegister(Boolean registrationDone)
Позволяет m-let выполнить любые необходимые операции после успешной или неудачной регистрации на сервере MBean.
- Определено в:
-
postRegisterв интерфейсеMBeanRegistration - Параметры:
-
registrationDone- Указывает, была ли m-let успешно зарегистрирована на сервере MBean. Значение false означает, что фаза регистрации завершилась неудачей.
preDeregister
public void preDeregister()
throws Exception Позволяет m-let выполнить необходимые операции перед разрегистрацией на сервере MBean.
- Определено в:
-
preDeregisterв интерфейсеMBeanRegistration - Исключения:
-
Exception- Это исключение должно быть поймано сервером MBean и переброшено как MBeanRegistrationException.
postDeregister
public void postDeregister()
Позволяет m-let выполнить любые необходимые операции после разрегистрации на сервере MBean.
- Определено в:
-
postDeregisterв интерфейсеMBeanRegistration
writeExternal
public void writeExternal(ObjectOutput out)
throws IOException,
UnsupportedOperationException Сохраняет содержимое данного MLet в заданный ObjectOutput. Не все реализации поддерживают этот метод. Те, что не поддерживают, выбрасывают UnsupportedOperationException. Подкласс может переопределить этот метод, чтобы поддержать его или изменить формат записываемых данных.
Формат записываемых данных не определён, но если реализация поддерживает writeExternal(java.io.ObjectOutput), она должна также поддерживать readExternal(java.io.ObjectInput) таким образом, чтобы то, что записывается первым, могло быть прочитано вторым.
- Определено в:
-
writeExternalв интерфейсеExternalizable - Параметры:
-
out- Поток для записи. - Исключения:
-
IOException- Если произошла проблема во время записи. -
UnsupportedOperationException- Если эта реализация не поддерживает эту операцию.
readExternal
public void readExternal(ObjectInput in)
throws IOException,
ClassNotFoundException,
UnsupportedOperationException Восстанавливает содержимое данного MLet из заданного ObjectInput. Не все реализации поддерживают этот метод. Те, что не поддерживают, выбрасывают UnsupportedOperationException. Подкласс может переопределить этот метод, чтобы поддержать его или изменить формат читаемых данных.
Формат считываемых данных не определён, но если реализация поддерживает readExternal(java.io.ObjectInput), она должна также поддерживать writeExternal(java.io.ObjectOutput) таким образом, чтобы то, что записывается вторым, могло быть прочитано первым.
- Определено в:
-
readExternalв интерфейсеExternalizable - Параметры:
-
in- Поток для чтения. - Исключения:
-
IOException- если произошла проблема во время чтения. -
ClassNotFoundException- если класс для восстанавливаемого объекта не найден. -
UnsupportedOperationException- если эта реализация не поддерживает эту операцию.
loadClass
public Class<?> loadClass(String name,
ClassLoaderRepository clr)
throws ClassNotFoundException Загружает класс, используя заданный ClassLoaderRepository, если класс не найден в URL этого MLet. Если заданный ClassLoaderRepository равен null, сразу же возникает ClassNotFoundException, если класс не найден в URL этого MLet.
- Параметры:
-
name- Имя класса, который нужно загрузить. -
clr- ClassLoaderRepository, который будет использоваться для поиска класса, если он не найден в этом ClassLoader. Может быть null. - Возвращает:
- Результирующий объект Class.
- Исключения:
-
ClassNotFoundException- Указанный класс не был найден ни в этом ClassLoader, ни в заданном ClassLoaderRepository.
findClass
protected Class<?> findClass(String name)
throws ClassNotFoundException Это основной метод для загрузчиков классов, который переопределяется.
- Переопределяет:
-
findClassв классеURLClassLoader - Параметры:
-
name- Имя класса. - Возвращает:
- Результирующий объект Class.
- Исключения:
-
ClassNotFoundException- Указанный класс не найден.
findLibrary
protected String findLibrary(String libname)
Возвращает абсолютный путь к имени нативного библиотеки. Виртуальная машина вызывает этот метод для поиска нативных библиотек, относящихся к классам, загруженным с помощью этого загрузчика классов. Библиотеки ищутся в файлах JAR, сначала только по имени нативной библиотеки, а если не найдено, то по имени нативной библиотеки вместе с архитектурно-специфичным именем пути (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, загруженных с помощью этого загрузчика классов, виртуальная машина ищет библиотеку по пути, указанному как свойство java.library.path.
- Overrides:
-
findLibraryв классеClassLoader - Parameters:
-
libname- Имя библиотеки. - Returns:
- Абсолютный путь к нативной библиотеке.
- See Also:
-
System.loadLibrary(String),System.mapLibraryName(String)
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, 2020, 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/11/docs/api/java.management/javax/management/loading/MLet.html