模块 java.rmi

类 RMIClassLoaderSpi

java.lang.Object
java.rmi.server.RMIClassLoaderSpi

public abstract class RMIClassLoaderSpi extends Object
RMIClassLoaderSpiRMIClassLoader 的服务提供商接口。特别是,RMIClassLoaderSpi 实例提供了以下 RMIClassLoader 静态方法的实现: 当其中一个方法被调用时,其行为是委托给此类实例的相应方法。在每个特定方法的文档中描述了每个方法如何委托给提供者实例的详细信息。有关如何选择提供程序实例的说明,请参阅 RMIClassLoader 的文档。
自从:
1.4
参见:
  • 构造方法详细信息

    • 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,或者如果 codebasenull 并且用于加载类的特定于提供者的 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,或者如果 codebasenull 并且用于加载类的特定于提供者的 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,或者如果 codebasenull 并且用于标识类加载器的特定于提供者的 URL 无效
      SecurityException - 如果存在安全管理器并且调用其 checkPermission 方法失败,或者如果调用者无权连接到代码库 URL 路径中的所有 URL
    • getClassAnnotation

      public abstract String  getClassAnnotation(Class <?> cl)
      提供 RMIClassLoader.getClassAnnotation(Class) 的实现。返回注释字符串(表示类定义的位置),RMI 在编组给定类的对象时将使用它来注释类描述符。
      参数:
      cl - 获取注解的类
      返回:
      一个字符串,用于在编组时注释给定的类,或 null
      抛出:
      NullPointerException - 如果 clnull