|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
public interface ClassLoaderRepository
此接口的实例用于保持在 MBean Server 中注册的 ClassLoader 的列表。它们提供了使用注册的 ClassLoader 来加载类所必需的方法。
ClassLoaderRepository
中的首个 ClassLoader 始终是 MBean Server 本身的 ClassLoader。
当在 MBean Server 中注册 MBean 时,如果它是 ClassLoader
的一个子类,并且它不实现 PrivateClassLoader
接口,那么将它添加到 MBean Server 的 ClassLoaderRepository
的末尾。如果以后从 MBean Server 注销它,则它将从 ClassLoaderRepository
中移除。
ClassLoaderRepository
中的 MBean 顺序是很重要的。对于 ClassLoaderRepository
中的任意两个 MBean X 和 Y,如果在 Y 的注册开始之前已完成 X 的注册,则 X 必须出现在 Y 的前面。如果 X 和 Y 是同时注册的,则它们的顺序是不确定的。注册 MBean 对应于调用 MBeanServer.registerMBean(java.lang.Object, javax.management.ObjectName)
或某个 MBeanServer
.createMBean
方法。
MBeanServerFactory
方法摘要 | |
---|---|
Class<?> |
loadClass(String className) 通过类加载器列表加载给定的类名称。 |
Class<?> |
loadClassBefore(ClassLoader stop, String className) 通过类加载器列表加载给定的类名称,在某个给定的类加载器处停止。 |
Class<?> |
loadClassWithout(ClassLoader exclude, String className) 通过类加载器列表加载给定的类名称,不包括某个给定的类加载器。 |
方法详细信息 |
---|
Class<?> loadClass(String className) throws ClassNotFoundException
通过类加载器列表加载给定的类名称。依次请求 ClassLoaderRepository 的每个 ClassLoader 通过其 ClassLoader.loadClass(String)
方法来加载类。如果它成功返回一个 Class
对象,则该对象就是此方法的结果。如果抛出 ClassNotFoundException
,则继续搜索下一个 ClassLoader。如果抛出另一个异常,则从此方法传播该异常。如果到达列表的末尾,则抛出 ClassNotFoundException
。
className
- 要被加载的类名称。
ClassNotFoundException
- 如果找不到指定的类。
Class<?> loadClassWithout(ClassLoader exclude, String className) throws ClassNotFoundException
通过类加载器列表加载给定的类名称,不包括某个给定的类加载器。依次请求 ClassLoaderRepository 的每个 ClassLoader(除 exclude
之外)通过其 ClassLoader.loadClass(String)
方法来加载类。如果它成功返回一个 Class
对象,则该对象就是此方法的结果。如果抛出 ClassNotFoundException
,则继续搜索下一个 ClassLoader。如果抛出另一个异常,则从此方法传播该异常。如果到达列表的末尾,则抛出 ClassNotFoundException
。
注意,如果 ClassLoaderRepository 中的某个 ClassLoader 从其 loadClass
方法调用此方法,那么如果 ClassLoaderRepository 中的另一个 ClassLoader 同时也在执行相同操作,则该 ClassLoader 将发生死锁。推荐使用 loadClassBefore(java.lang.ClassLoader, java.lang.String)
方法以避免死锁风险。
className
- 要被加载的类名称。
exclude
- 不包括的类加载器。可能为 null,在这种情况下此方法等效于
loadClass(className)
。
ClassNotFoundException
- 如果找不到指定的类。
Class<?> loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException
通过类加载器列表加载给定的类名称,在某个给定的类加载器处停止。依次请求 ClassLoaderRepository 的每个 ClassLoader 通过其 ClassLoader.loadClass(String)
方法来加载类。如果它成功返回一个 Class
对象,则该对象就是此方法的结果。如果抛出 ClassNotFoundException
,则继续搜索下一个 ClassLoader。如果抛出另一个异常,则从此方法传播该异常。如果搜索到达 stop
或列表的末尾,则抛出 ClassNotFoundException
。
通常从 stop
处的 loadClass
方法调用此方法,以参考 ClassLoaderRepository
中出现在它之前的的加载器。一旦遇到 stop
,搜索立即停止,这样就避免了可能出现的并发类加载死锁。
className
- 要被加载的类名称。
stop
- 停止处的类加载器。可能为 null,在这种情况下此方法等效于
loadClass(className)
。
ClassNotFoundException
- 如果找不到指定的类。
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。