Spec-Zone.ru › OpenJDK 17

Интерфейс ClassLoaderRepository

public interface ClassLoaderRepository

Экземпляры этого интерфейса используются для хранения списка зарегистрированных ClassLoader в MBean Server. Они предоставляют необходимые методы для загрузки классов, используя зарегистрированные ClassLoader.

Первый ClassLoader в списке ClassLoaderRepository всегда является собственным ClassLoader MBean Server.

Когда MBean регистрируется в MBean Server, если он является подклассом ClassLoader и не реализует интерфейс PrivateClassLoader, он добавляется в конец списка ClassLoaderRepository MBean Server. Если он затем отменяется из MBean Server, он удаляется из ClassLoaderRepository.

Порядок MBean в ClassLoaderRepository значим. Для любых двух MBean X и Y в списке ClassLoaderRepository, X должен стоять перед Y, если регистрация X была завершена до начала регистрации Y. Если X и Y были зарегистрированы одновременно, их порядок неопределён. Регистрация MBean соответствует вызову MBeanServer.registerMBean(java.lang.Object, javax.management.ObjectName) или одному из методов MBeanServer.createMBean.

Since:
1.5
See Also:
  • MBeanServerFactory

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

Модификатор и тип Метод Описание
Class<?> loadClass(String className)
Загрузка заданного имени класса через список загрузчиков классов.
Class<?> loadClassBefore(ClassLoader stop, String className)
Загрузка заданного имени класса через список загрузчиков классов, останавливаясь на заданном.
Class<?> loadClassWithout(ClassLoader exclude, String className)
Загрузка заданного имени класса через список загрузчиков классов, исключая заданный.

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

loadClass

Class<?> loadClass(String className) throws ClassNotFoundException

Загрузка заданного имени класса через список загрузчиков классов. Каждый ClassLoader по очереди из ClassLoaderRepository вызывается для загрузки класса через метод ClassLoader.loadClass(String). Если он успешно возвращает объект Class, то это результат этого метода. Если он выбрасывает ClassNotFoundException, поиск продолжается с последующим ClassLoader. Если он выбрасывает другое исключение, исключение передаётся из этого метода. Если конец списка достигнут, выбрасывается ClassNotFoundException.

Parameters:
className - Имя класса, который нужно загрузить.
Returns:
загруженный класс.
Throws:
ClassNotFoundException - Указанный класс не был найден.

loadClassWithout

Class<?> loadClassWithout(ClassLoader exclude, String className) throws ClassNotFoundException

Загрузка заданного имени класса через список загрузчиков классов, исключая заданный. Каждый ClassLoader по очереди из ClassLoaderRepository, за исключением exclude, вызывается для загрузки класса через метод ClassLoader.loadClass(String). Если он успешно возвращает объект Class, то это результат этого метода. Если он выбрасывает ClassNotFoundException, поиск продолжается с последующим ClassLoader. Если он выбрасывает другое исключение, исключение передаётся из этого метода. Если конец списка достигнут, выбрасывается ClassNotFoundException.

Обратите внимание, что если ClassLoader в ClassLoaderRepository вызывает этот метод из своего метода loadClass, он подвергается риску тупика, если другой ClassLoader в ClassLoaderRepository делает то же самое одновременно. Рекомендуется использовать метод loadClassBefore(java.lang.ClassLoader, java.lang.String) для избежания риска тупика.

Parameters:
className - Имя класса, который нужно загрузить.
exclude - Загрузчик классов, который нужно исключить. Может быть null, в этом случае этот метод эквивалентен loadClass(className).
Returns:
загруженный класс.
Throws:
ClassNotFoundException - Указанный класс не был найден.

loadClassBefore

Class<?> loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException

Загрузка заданного имени класса через список загрузчиков классов, останавливаясь на заданном. Каждый ClassLoader по очереди из ClassLoaderRepository вызывается для загрузки класса через метод ClassLoader.loadClass(String). Если он успешно возвращает объект Class, то это результат этого метода. Если он выбрасывает ClassNotFoundException, поиск продолжается с последующим ClassLoader. Если поиск достигает stop или конца списка, выбрасывается ClassNotFoundException.

Обычно этот метод вызывается из метода loadClass stop, чтобы проконсультироваться с загрузчиками, которые появляются перед ним в ClassLoaderRepository. Остановкой поиска как только stop достигнут, предотвращается потенциальный тупик при одновременной загрузке класса.

Parameters:
className - Имя класса, который нужно загрузить.
stop - Загрузчик классов, на котором нужно остановиться. Может быть null, в этом случае этот метод эквивалентен loadClass(className).
Returns:
загруженный класс.
Throws:
ClassNotFoundException - Указанный класс не был найден.

© 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/ClassLoaderRepository.html

Spec-Zone.ru

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