Интерфейс ClassLoaderRepository
public interface ClassLoaderRepository
Экземпляры этого интерфейса используются для хранения списка зарегистрированных ClassLoader в сервере MBean. Они предоставляют необходимые методы для загрузки классов с помощью зарегистрированных ClassLoader.
Первый ClassLoader в ClassLoaderRepository — всегда собственный ClassLoader сервера MBean.
Когда MBean регистрируется в сервере MBean, если он является подклассом ClassLoader и если он не реализует интерфейс PrivateClassLoader, он добавляется в конец списка ClassLoaderRepository сервера MBean. Если он впоследствии удаляется из сервера MBean, он удаляется из 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:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Class |
loadClass |
Загрузка заданного имени класса через список загрузчиков классов. |
Class |
loadClassBefore |
Загрузка заданного имени класса через список загрузчиков классов, останавливаясь на заданном. |
Class |
loadClassWithout |
Загрузка заданного имени класса через список загрузчиков классов, исключая заданный. |
Подробное описание методов
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:
-
exclude- Загрузчик класса, который нужно исключить. Может быть null, в этом случае этот метод эквивалентенloadClass(className). -
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:
-
stop- Загрузчик класса, на котором нужно остановиться. Может быть null, в этом случае этот метод эквивалентенloadClass(className). -
className- Имя класса для загрузки. - Returns:
- загруженный класс.
- Throws:
-
ClassNotFoundException- Указанный класс не был найден.
© 1993, 2023, 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/21/docs/api/java.management/javax/management/loading/ClassLoaderRepository.html