Spec-Zone.ru › OpenJDK 8

Класс 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=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, 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's ClassLoaderRepository.

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-файле как:

  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.

Переопределяет:
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.

Spec-Zone.ru

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