Класс RMIClassLoaderSpi
- java.lang.Object
-
- java.rmi.server.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
- See Also:
RMIClassLoader
Конструкторы
| Конструктор | Описание |
|---|---|
RMIClassLoaderSpi() |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract String |
getClassAnnotation(Class<?> cl) |
Предоставляет реализацию для |
abstract ClassLoader |
getClassLoader(String codebase) |
Предоставляет реализацию для |
abstract Class<?> |
loadClass(String codebase,
String name,
ClassLoader defaultLoader) |
Предоставляет реализацию для |
abstract Class<?> |
loadProxyClass(String codebase,
String[] interfaces,
ClassLoader defaultLoader) |
Предоставляет реализацию для |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Конструкторы
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 кодовой базы.
Реализация этого метода должна либо вернуть класс с заданным именем, либо выбросить исключение.
- Parameters:
-
codebase- список URL-адресов (разделенных пробелами) для загрузки класса, илиnull -
name- имя класса для загрузки -
defaultLoader- дополнительный контекстный загрузчик класса для использования, илиnull - Returns:
- объект
Class, представляющий загруженный класс - Throws:
-
MalformedURLException- еслиcodebaseне пуст и содержит недействительный 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 кодовой базы, необязательно используя предоставленный загрузчик.
Реализация этого метода должна либо вернуть класс прокси, реализующий указанные интерфейсы, либо выбросить исключение.
- Parameters:
-
codebase- список URL-адресов (разделенных пробелами) для загрузки классов, илиnull -
interfaces- имена интерфейсов для реализации классом прокси -
defaultLoader- дополнительный контекстный загрузчик класса для использования, илиnull - Returns:
- динамический класс прокси, реализующий указанные интерфейсы
- Throws:
-
MalformedURLException- еслиcodebaseне пуст и содержит недействительный 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 кодовой базы.
- Parameters:
-
codebase- список URL-адресов (разделенных пробелами), из которых возвращаемый загрузчик классов будет загружать классы, илиnull - Returns:
- загрузчик классов, который загружает классы из заданного пути к URL кодовой базы
- Throws:
-
MalformedURLException- еслиcodebaseне пуст и содержит недействительный URL-адрес, или еслиcodebaseявляетсяnullи используется недействительный URL-адрес поставщика для идентификации загрузчика классов -
SecurityException- если имеется менеджер безопасности и вызов его методаcheckPermissionзавершился ошибкой или если у вызывающего контекста нет разрешения на подключение ко всем URL-адресам в пути к URL кодовой базы
getClassAnnotation
public abstract String getClassAnnotation(Class<?> cl)
Предоставляет реализацию для RMIClassLoader.getClassAnnotation(Class). Возвращает строку аннотации (представляющую расположение определения класса), которую RMI будет использовать для аннотирования описателя класса при сериализации объектов данного класса.
- Parameters:
-
cl- класс, для которого требуется получить аннотацию - Returns:
- строка, используемая для аннотирования данного класса при его сериализации, или
null - Throws:
-
NullPointerException- еслиclявляетсяnull
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.rmi/java/rmi/server/RMIClassLoaderSpi.html