Spec-Zone.ru › OpenJDK 17

Класс 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. M-let — это сокращение от 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 файлов, содержащих 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=argumentType VALUE=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, создаётся экземпляр каждого MBean, указанного в файле, и он регистрируется.

Сервис m-let расширяет java.net.URLClassLoader и может использоваться для загрузки удалённых классов и jar-файлов в виртуальной машине агента.

Примечание - Загрузчик классов класса MLet использует MBeanServerFactory.getClassLoaderRepository(javax.management.MBeanServer) для загрузки классов, которые не были найдены в загруженных jar-файлах.

С:
1.5
См. также:
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
MLet()
Создаёт новый MLet с родительским ClassLoader по умолчанию.
MLet(URL[] urls)
Создаёт новый MLet для указанных URL с родительским ClassLoader по умолчанию.
MLet(URL[] urls, boolean delegateToCLR)
Создаёт новый MLet для указанных URL с родительским ClassLoader по умолчанию.
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, родительского ClassLoader и URLStreamHandlerFactory.
MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory, boolean delegateToCLR)
Создаёт новый MLet для указанных URL, родительского ClassLoader и 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)
Основной метод для ClassLoader, который переопределяется.
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)
Загружает класс, используя заданный ClassLoaderRepository, если класс не найден в URL этого MLet.
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 из заданного ObjectInput.
void setLibraryDirectory(String libdir)
Устанавливает директорию, используемую загрузчиком библиотек для хранения нативных библиотек перед их загрузкой в память.
void writeExternal(ObjectOutput out)
Сохраняет содержимое этого 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 с использованием родительского ClassLoader по умолчанию.

MLet

public MLet(URL[] urls)
Создаёт новый MLet для указанных URL-адресов с использованием родительского ClassLoader по умолчанию. URL-адреса будут проверяться в указанном порядке для поиска классов и ресурсов после первой проверки в родительском ClassLoader.
Параметры:
urls - URL-адреса для загрузки классов и ресурсов.

MLet

public MLet(URL[] urls, ClassLoader parent)
Создаёт новый MLet для заданных URL-адресов. URL-адреса будут проверяться в указанном порядке для поиска классов и ресурсов после первой проверки в указанном родительском ClassLoader. Аргумент parent будет использоваться в качестве родительского ClassLoader для делегирования.
Параметры:
urls - URL-адреса для загрузки классов и ресурсов.
parent - Родительский ClassLoader для делегирования.

MLet

public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
Создаёт новый MLet для указанных URL-адресов, родительского ClassLoader и URLStreamHandlerFactory. Аргумент parent будет использоваться в качестве родительского ClassLoader для делегирования. Аргумент factory будет использоваться как фабрика обработчиков потоков для получения обработчиков протоколов при создании новых URL-адресов.
Параметры:
urls - URL-адреса для загрузки классов и ресурсов.
parent - Родительский ClassLoader для делегирования.
factory - URLStreamHandlerFactory для использования при создании URL-адресов.

MLet

public MLet(URL[] urls, boolean delegateToCLR)
Создаёт новый MLet для указанных URL-адресов с использованием родительского ClassLoader по умолчанию. URL-адреса будут проверяться в указанном порядке для поиска классов и ресурсов после первой проверки в родительском ClassLoader.
Параметры:
urls - URL-адреса для загрузки классов и ресурсов.
delegateToCLR - true, если при поиске класса ни в родительском ClassLoader, ни в URL-адресах, MLet должен делегировать запросу в ClassLoaderRepository содержащего его MBeanServer.

MLet

public MLet(URL[] urls, ClassLoader parent, boolean delegateToCLR)
Создаёт новый MLet для заданных URL-адресов. URL-адреса будут проверяться в указанном порядке для поиска классов и ресурсов после первой проверки в указанном родительском ClassLoader. Аргумент parent будет использоваться в качестве родительского ClassLoader для делегирования.
Параметры:
urls - URL-адреса для загрузки классов и ресурсов.
parent - Родительский ClassLoader для делегирования.
delegateToCLR - true, если при поиске класса ни в родительском ClassLoader, ни в URL-адресах, MLet должен делегировать запросу в ClassLoaderRepository содержащего его MBeanServer.

MLet

public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory, boolean delegateToCLR)
Создаёт новый MLet для указанных URL-адресов, родительского ClassLoader и URLStreamHandlerFactory. Аргумент parent будет использоваться в качестве родительского ClassLoader для делегирования. Аргумент factory будет использоваться как фабрика обработчиков потоков для получения обработчиков протоколов при создании новых URL-адресов.
Параметры:
urls - URL-адреса для загрузки классов и ресурсов.
parent - Родительский ClassLoader для делегирования.
factory - URLStreamHandlerFactory для использования при создании URL-адресов.
delegateToCLR - true, если при поиске класса ни в родительском ClassLoader, ни в URL-адресах, MLet должен делегировать запросу в ClassLoaderRepository содержащего его MBeanServer.

Подробное описание методов

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, которые определяют MBean, которые нужно добавить в сервер MBean. Расположение текстового файла задаётся URL-адресом. MBean, указанные в файле MLET, будут созданы и зарегистрированы в сервере MBean.
Определено в:
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
Загружает текстовый файл, содержащий теги MLET, которые определяют MBean, которые нужно добавить в сервер MBean. Расположение текстового файла задаётся URL-адресом. MBean, указанные в файле MLET, будут созданы и зарегистрированы в сервере MBean.
Определено в:
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(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 или после того, как регистрация завершилась неудачно.
Specified by:
postRegister в интерфейсе MBeanRegistration
Parameters:
registrationDone - Указывает, была ли m-let успешно зарегистрирована в сервере MBean. Значение false означает, что этап регистрации завершился неудачно.

preDeregister

public void preDeregister() throws Exception
Позволяет m-let выполнить любые необходимые операции перед тем, как сервер MBean отрегистрирует её.
Specified by:
preDeregister в интерфейсе MBeanRegistration
Throws:
Exception - Это исключение должно быть перехвачено сервером MBean и повторно выброшено как MBeanRegistrationException.

postDeregister

public void postDeregister()
Позволяет m-let выполнить любые необходимые операции после того, как она была отменена регистрации в сервере MBean.
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)
Возвращает абсолютный путь к нативному библиотечному файлу. VM вызывает этот метод, чтобы найти нативные библиотеки, принадлежащие классам, загруженным с помощью этого загрузчика классов. Библиотеки ищутся в JAR-файлах сначала только по имени нативной библиотеки, а если не найдены, то по имени нативной библиотеки вместе с архитектурно-специфичным именем пути (OSName/OSArch/OSVersion/lib/nativelibname), например,

библиотека stat на Solaris SPARC 5.7 будет искаться в JAR-файле как:

  1. libstat.so
  2. SunOS/sparc/5.7/lib/libstat.so
библиотека stat на Windows NT 4.0 будет искаться в JAR-файле как:
  1. stat.dll
  2. 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:
  • 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, 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API