Класс 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=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 с использованием родительского класса загрузчика по умолчанию.

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)

Загружает класс, используя заданный 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, используя родительский загрузчик делегирования по умолчанию.

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 как:

  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, загруженных с помощью этого загрузчика классов, виртуальная машина ищет библиотеку по пути, указанному как свойство 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

Spec-Zone .ru
спецификации, руководства, описания, API