Класс RMIClassLoaderSpi
public abstract class RMIClassLoaderSpi extends Object
RMIClassLoaderSpi — это интерфейс поставщика сервисов для RMIClassLoader. В частности, экземпляр RMIClassLoaderSpi предоставляет реализацию следующих статических методов RMIClassLoader: -
RMIClassLoader.loadClass(URL,String) -
RMIClassLoader.loadClass(String,String) -
RMIClassLoader.loadClass(String,String,ClassLoader) -
RMIClassLoader.loadProxyClass(String,String[],ClassLoader) -
RMIClassLoader.getClassLoader(String) -
RMIClassLoader.getClassAnnotation(Class)
RMIClassLoader для описания того, как выбирается экземпляр поставщика.- Since:
- 1.4
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RMIClassLoaderSpi() |
Конструктор для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract String |
getClassAnnotation |
Предоставляет реализацию для RMIClassLoader.getClassAnnotation(Class). |
abstract ClassLoader |
getClassLoader |
Предоставляет реализацию для RMIClassLoader.getClassLoader(String). |
abstract Class<?> |
loadClass |
Предоставляет реализацию для RMIClassLoader.loadClass(URL,String), RMIClassLoader.loadClass(String,String) и RMIClassLoader.loadClass(String,String,ClassLoader). |
abstract Class<?> |
loadProxyClass |
Предоставляет реализацию для RMIClassLoader.loadProxyClass(String,String[],ClassLoader). |
Подробное описание конструкторов
RMIClassLoaderSpi
public RMIClassLoaderSpi()
Подробное описание методов
loadClass
public abstract Class<?> loadClass(String codebase, String name, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
RMIClassLoader.loadClass(URL,String), RMIClassLoader.loadClass(String,String) и RMIClassLoader.loadClass(String,String,ClassLoader). Загружает класс из пути к URL кодовой базы, при необходимости используя предоставленный загрузчик. Как правило, реализация поставщика попытается разрешить указанный класс, используя заданный defaultLoader, если он задан, прежде чем попытаться разрешить класс из пути к URL кодовой базы. Реализация этого метода должна либо вернуть класс с заданным именем, либо выбросить исключение.
- Параметры:
-
codebase- список URL-адресов (разделенных пробелами) для загрузки класса, илиnull -
name- имя класса для загрузки -
defaultLoader- дополнительный контекстный загрузчик классов для использования, илиnull - Возвращает:
- объект
Class, представляющий загруженный класс - Исключения:
-
MalformedURLException- еслиcodebaseнеnullи содержит недопустимый URL, или еслиcodebaseявляетсяnullи используется недопустимый URL поставщика для загрузки классов -
ClassNotFoundException- если определение класса не было найдено по указанному расположению
loadProxyClass
public abstract Class<?> loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
RMIClassLoader.loadProxyClass(String,String[],ClassLoader). Загружает класс динамического прокси (см. Proxy), который реализует набор интерфейсов с заданными именами из пути к URL кодовой базы, при необходимости используя предоставленный загрузчик. Реализация этого метода должна либо вернуть класс прокси, реализующий указанные интерфейсы, либо выбросить исключение.
- Параметры:
-
codebase- список URL-адресов (разделенных пробелами) для загрузки классов, илиnull -
interfaces- имена интерфейсов для реализации классом прокси -
defaultLoader- дополнительный контекстный загрузчик классов для использования, илиnull - Возвращает:
- класс динамического прокси, реализующий указанные интерфейсы
- Исключения:
-
MalformedURLException- еслиcodebaseнеnullи содержит недопустимый URL, или еслиcodebaseявляетсяnullи используется недопустимый URL поставщика для загрузки классов -
ClassNotFoundException- если определение одного из указанных интерфейсов не было найдено по указанному расположению, или если создание класса динамического прокси завершилось неудачей (например, еслиProxy.getProxyClass(ClassLoader,Class[])выброситIllegalArgumentExceptionдля данного списка интерфейсов)
getClassLoader
public abstract ClassLoader getClassLoader(String codebase) throws MalformedURLException
RMIClassLoader.getClassLoader(String). Возвращает загрузчик классов, который загружает классы из указанного пути к URL кодовой базы. Если есть менеджер безопасности, его метод checkPermission будет вызван с разрешением RuntimePermission("getClassLoader"); это может привести к SecurityException. Реализация этого метода также может выполнить дополнительные проверки безопасности, чтобы убедиться, что контекст вызова имеет разрешение на подключение ко всем URL-адресам в пути к URL кодовой базы.
- Параметры:
-
codebase- список URL-адресов (разделенных пробелами), из которых возвращаемый загрузчик классов будет загружать классы, илиnull - Возвращает:
- загрузчик классов, который загружает классы из указанного пути к URL кодовой базы
- Исключения:
-
MalformedURLException- еслиcodebaseнеnullи содержит недопустимый URL, или еслиcodebaseявляетсяnullи используется недопустимый URL поставщика для идентификации загрузчика классов -
SecurityException- если есть менеджер безопасности, и вызов его методаcheckPermissionзавершился неудачей, или если у вызывающей стороны нет разрешения на подключение ко всем URL-адресам в пути к URL кодовой базы
getClassAnnotation
public abstract String getClassAnnotation(Class<?> cl)
RMIClassLoader.getClassAnnotation(Class). Возвращает строку аннотации (представляющую расположение определения класса), которую RMI будет использовать для аннотации описателя класса при сериализации объектов данного класса.- Параметры:
-
cl- класс, для которого требуется получить аннотацию - Возвращает:
- строка, используемая для аннотации данного класса при сериализации, или
null - Исключения:
-
NullPointerException- еслиclявляетсяnull
© 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.rmi/java/rmi/server/RMIClassLoaderSpi.html