java.lang.Objectjava.rmi.server.RMIClassLoaderSpi
public abstract class RMIClassLoaderSpi
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 文档。
RMIClassLoader
| 构造方法摘要 | |
|---|---|
RMIClassLoaderSpi() |
|
| 方法摘要 | |
|---|---|
abstract String |
getClassAnnotation(Class<?> cl) 提供 RMIClassLoader.getClassAnnotation(Class) 的实现。 |
abstract ClassLoader |
getClassLoader(String codebase) 提供 RMIClassLoader.getClassLoader(String) 的实现。 |
abstract Class<?> |
loadClass(String codebase, String name, ClassLoader defaultLoader) 提供 RMIClassLoader.loadClass(URL,String)、RMIClassLoader.loadClass(String,String) 和 RMIClassLoader.loadClass(String,String,ClassLoader) 的实现。 |
abstract Class<?> |
loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader) 提供 RMIClassLoader.loadProxyClass(String,String[],ClassLoader) 的实现。 |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 构造方法详细信息 |
|---|
public RMIClassLoaderSpi()
| 方法详细信息 |
|---|
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 - 如果在指定位置无法找到该类的定义
public abstract Class<?> loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
RMIClassLoader.loadProxyClass(String,String[],ClassLoader) 的实现。选用提供的加载器,从代码基 URL 路径加载实现一组具有给定名称接口集的动态代理类(请参阅
Proxy)。
此方法的实现必须能返回一个实现指定接口的代理类,或抛出异常。
codebase - 要从其加载类的 URL 列表(由空格分隔),或
null
interfaces - 要实现的代理类的接口名称
defaultLoader - 要使用的其他上下文类加载器,或
null
MalformedURLException - 如果
codebase 为非
null 且包含一个无效 URL,或者如果
codebase 为
null 且用于加载类的特定于提供者的 URL 无效。
ClassNotFoundException - 如果在指定位置无法找到某个指定接口的定义,或者如果动态代理类的创建失败(例如,如果
Proxy.getProxyClass(ClassLoader,Class[]) 抛出给定接口列表的
IllegalArgumentException)
public abstract ClassLoader getClassLoader(String codebase) throws MalformedURLException
RMIClassLoader.getClassLoader(String) 的实现。返回从给定代码基 URL 路径加载类的类加载器。
如果存在安全管理器,则使用 RuntimePermission("getClassLoader") 权限调用其 checkPermission 方法;这会导致 SecurityException。此方法的实现还可以执行进一步的安全检查,以验证调用上下文是否具有连接到代码基 URL 路径中的所有 URL 的权限。
codebase - 返回的类加载器将从其加载类的 URL 列表(由空格分隔),或
null
MalformedURLException - 如果
codebase 为非
null 且包含一个无效 URL,或者如果
codebase 为
null 且用于标识类加载器的特定于提供者的 URL 无效
SecurityException - 如果存在安全管理器且其
checkPermission 方法的调用失败,或者如果调用方没有连接到代码基 URL 路径中所有 URL 的权限
public abstract String getClassAnnotation(Class<?> cl)
RMIClassLoader.getClassAnnotation(Class) 的实现。返回表示类定义位置的注释字符串,RMI 将在编组给定类的对象时用其注释类描述符。
cl - 要获得其注释的类
null
NullPointerException - 如果
cl 为
null