- java.lang.Object
-
- java.rmi.server.RMIClassLoaderSpi
-
public abstract class RMIClassLoaderSpiextends 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
的文档。- 从以下版本开始:
- 1.4
- 另请参见:
-
RMIClassLoader
-
-
-
构造方法摘要
构造方法 构造器 描述 RMIClassLoaderSpi()
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 abstract String
getClassAnnotation(类<?> cl)
abstract ClassLoader
getClassLoader(String codebase)
abstract 类<?>
loadClass(String codebase, String name, ClassLoader defaultLoader)
abstract 类<?>
loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader)
-
-
-
方法详细信息
-
loadClass
public abstract 类<?> loadClass(String codebase, String name, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
为贯彻RMIClassLoader.loadClass(URL,String)
,RMIClassLoader.loadClass(String,String)
和RMIClassLoader.loadClass(String,String,ClassLoader)
。 从代码库URL路径加载一个类,可选地使用提供的加载器。 通常,在尝试从代码库URL路径中解析类之前,提供程序实现将尝试使用给定的defaultLoader
(如果已指定)解析命名类。此方法的实现必须返回具有给定名称的类或抛出异常。
- 参数
-
codebase
- 要从中加载类的URL列表(以空格分隔),或null
-
name
- 要加载的类的名称 -
defaultLoader
- 要使用的其他上下文类加载器,或null
- 结果
- 表示已加载类的
类
对象 - 异常
-
MalformedURLException
- 如果codebase
不是null
并且包含无效的URL,或者codebase
是null
并且用于加载类的提供程序特定的URL无效 -
ClassNotFoundException
- 如果在指定位置找不到类的定义
-
loadProxyClass
public abstract 类<?> 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路径加载类。如果有安全经理,将以
RuntimePermission("getClassLoader")
权限调用其checkPermission
方法; 这可能导致SecurityException
。 此方法的实现还可以执行进一步的安全检查,以验证调用上下文是否具有连接到代码库URL路径中的所有URL的权限。- 参数
-
codebase
- 返回的类加载器将从中加载类的URL列表(以空格分隔),或null
- 结果
- 一个类加载器,它从给定的代码库URL路径加载类
- 异常
-
MalformedURLException
- 如果codebase
不是null
并且包含无效的URL,或者如果codebase
是null
并且用于标识类加载器的特定于提供者的URL无效 -
SecurityException
- 如果存在安全管理器并且其checkPermission
方法的调用失败,或者调用者没有权限连接到代码库URL路径中的所有URL
-
getClassAnnotation
public abstract String getClassAnnotation(类<?> cl)
提供RMIClassLoader.getClassAnnotation(Class)
的实现。 返回注释字符串(表示类定义的位置),RMI将在编组给定类的对象时用于注释类描述符。- 参数
-
cl
- 获取注释的类 - 结果
- 在被编组时用于注释给定类的字符串,或
null
- 异常
-
NullPointerException
- 如果cl
是null
-
-