Интерфейс ClassLoaderRepository
public interface ClassLoaderRepository
Экземпляры этого интерфейса используются для хранения списка загрузчиков классов, зарегистрированных на сервере MBean. Они предоставляют необходимые методы для загрузки классов с помощью зарегистрированных загрузчиков классов.
Первый загрузчик классов в ClassLoaderRepository всегда является собственным загрузчиком классов сервера MBean.
Когда MBean регистрируется на сервере MBean, если он является подклассом ClassLoader и не реализует интерфейс PrivateClassLoader, он добавляется в конец ClassLoaderRepository сервера MBean. Если впоследствии он отменяет регистрацию на сервере MBean, он удаляется из ClassLoaderRepository.
Порядок MBean в ClassLoaderRepository имеет значение. Для любых двух MBean X и Y в ClassLoaderRepository X должен располагаться перед Y, если регистрация X завершилась до начала регистрации Y. Если X и Y регистрировались одновременно, их порядок не определён. Регистрация MBean соответствует вызову MBeanServer.registerMBean(Object, ObjectName) или одного из методов .createMBean интерфейса MBeanServer.
- Начиная с:
- 1.5
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Class |
loadClass |
Загружает указанный класс по имени, перебирая список загрузчиков классов. |
Class |
loadClassBefore |
Загружает указанный класс по имени, перебирая список загрузчиков классов и останавливаясь на заданном загрузчике. |
Class |
loadClassWithout |
Загружает указанный класс по имени, перебирая список загрузчиков классов и исключая заданный загрузчик. |
Подробное описание методов
loadClass
Class<?> loadClass(String className) throws ClassNotFoundException
Загружает указанный класс по имени, перебирая список загрузчиков классов. Каждый загрузчик классов из ClassLoaderRepository по очереди вызывается для загрузки класса с помощью метода ClassLoader.loadClass(String). Если метод успешно возвращает объект Class, он становится результатом этого метода. Если метод выбрасывает исключение ClassNotFoundException, поиск продолжается со следующим загрузчиком классов. Если выбрасывается другое исключение, оно передаётся вызывающему коду. Если достигнут конец списка, выбрасывается исключение ClassNotFoundException.
- Параметры:
-
className— имя загружаемого класса. - Возвращает:
- загруженный класс.
- Выбрасывает:
-
ClassNotFoundException— указанный класс не найден.
loadClassWithout
Class<?> loadClassWithout(ClassLoader exclude, String className) throws ClassNotFoundException
Загружает указанный класс по имени, перебирая список загрузчиков классов и исключая заданный загрузчик. Каждый загрузчик классов из ClassLoaderRepository по очереди, за исключением exclude, вызывается для загрузки класса с помощью метода ClassLoader.loadClass(String). Если метод успешно возвращает объект Class, он становится результатом этого метода. Если метод выбрасывает исключение ClassNotFoundException, поиск продолжается со следующим загрузчиком классов. Если выбрасывается другое исключение, оно передаётся вызывающему коду. Если достигнут конец списка, выбрасывается исключение ClassNotFoundException.
Обратите внимание: если загрузчик классов из ClassLoaderRepository вызывает этот метод из своего метода loadClass, это может привести к взаимной блокировке, если в то же время другой загрузчик классов из ClassLoaderRepository делает то же самое. Чтобы избежать риска взаимной блокировки, рекомендуется использовать метод loadClassBefore(ClassLoader, String).
- Параметры:
-
exclude— исключаемый загрузчик классов. Может быть null; в этом случае метод эквивалентенloadClass(className). -
className— имя загружаемого класса. - Возвращает:
- загруженный класс.
- Выбрасывает:
-
ClassNotFoundException— указанный класс не найден.
loadClassBefore
Class<?> loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException
Загружает указанный класс по имени, перебирая список загрузчиков классов и останавливаясь на заданном загрузчике. Каждый загрузчик классов из ClassLoaderRepository по очереди вызывается для загрузки класса с помощью метода ClassLoader.loadClass(String). Если метод успешно возвращает объект Class, он становится результатом этого метода. Если метод выбрасывает исключение ClassNotFoundException, поиск продолжается со следующим загрузчиком классов. Если выбрасывается другое исключение, оно передаётся вызывающему коду. Если поиск доходит до stop или конца списка, выбрасывается исключение ClassNotFoundException.
Обычно этот метод вызывается из метода loadClass загрузчика классов stop, чтобы обратиться к загрузчикам, расположенным перед ним в ClassLoaderRepository. Остановка поиска сразу после достижения stop позволяет избежать потенциальной взаимной блокировки при параллельной загрузке классов.
- Параметры:
-
stop— загрузчик классов, на котором следует остановиться. Может быть null; в этом случае метод эквивалентенloadClass(className). -
className— имя загружаемого класса. - Возвращает:
- загруженный класс.
- Выбрасывает:
-
ClassNotFoundException— указанный класс не найден.
© 1993, 2025, 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/25/docs/api/java.management/javax/management/loading/ClassLoaderRepository.html