java.lang.Object java.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