Класс 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файлов, содержащих управляемые объекты (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 начинается с двоеточия (:), часть домена имени объекта — это стандартный домен сервера управляемых объектов, возвращаемый по ссылке
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, используя родительский загрузчик делегирования по умолчанию. |
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, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, 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 должен делегировать запрос в содержащий его MBeanServer'sClassLoaderRepository.
MLet
public MLet(URL[] urls,
ClassLoader parent,
boolean delegateToCLR) Создаёт новый MLet для заданных URL-адресов. URL-адреса будут просматриваться в указанном порядке для поиска классов и ресурсов после предварительного поиска в заданном родительском ClassLoader. Аргумент parent будет использован как родительский ClassLoader для делегирования.
- Параметры:
-
urls- URL-адреса для загрузки классов и ресурсов. -
parent- Родительский загрузчик классов для делегирования. -
delegateToCLR- True, если при отсутствии класса как в родительском ClassLoader, так и в указанных URL, MLet должен делегировать запрос кClassLoaderRepositoryсодержащего его MBeanServer.
MLet
public MLet(URL[] urls,
ClassLoader parent,
URLStreamHandlerFactory factory,
boolean delegateToCLR) Создаёт новый MLet для указанных URL-адресов, родительского загрузчика классов и URLStreamHandlerFactory. Аргумент parent будет использован как родительский загрузчик классов для делегирования. Аргумент factory будет использован как фабрика обработчиков потоков для получения обработчиков протоколов при создании новых URL.
- Параметры:
-
urls- URL-адреса для загрузки классов и ресурсов. -
parent- Родительский загрузчик классов для делегирования. -
factory- URLStreamHandlerFactory для использования при создании URL. -
delegateToCLR- True, если при отсутствии класса как в родительском ClassLoader, так и в указанных URL, MLet должен делегировать запрос кClassLoaderRepositoryсодержащего его MBeanServer.
Методы
addURL
public void addURL(URL url)
Добавляет указанный URL в список URL для поиска классов и ресурсов.
- Задано:
-
addURLв интерфейсеMLetMBean - Переопределяет:
-
addURLв классеURLClassLoader - Параметры:
-
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 текстового файла, который нужно загрузить в виде объекта String. - Возвращает:
- Множество, содержащее по одной записи на каждый тег 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)
Установить директорию библиотеки
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's в указанном 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's из указанного 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's. Указанный ClassLoaderRepository может быть null, в этом случае возникает ClassNotFoundException сразу, если класс не найден в URL-адресах этого MLet's.
- Параметры:
-
name— Имя класса, который мы хотим загрузить. -
clr— Класс-загрузчик, который будет использоваться для поиска заданного класса, если он не найден в этом 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.
- Переопределяет:
-
findLibraryв классеClassLoader - Параметры:
-
libname- Имя библиотеки. - Возвращает:
- Абсолютный путь к нативной библиотеке.
- См. также:
-
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 без изменений.
- Параметры:
-
version- Номер версии файла.jarхранящегося локально. -
codebase- Базовый URL удалённого файла.jar. -
jarfile- Имя файла.jar, который необходимо загрузить. -
mlet- ЭкземплярMLetContentпредставляющий тегMLET. - Возвращает:
- базу кода для использования загруженного MBean. Возвращаемое значение не должно быть null.
- Исключения:
-
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.