|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.management.loading
接口 ClassLoaderRepository
-
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
方法。
- 从以下版本开始:
- 1.5
- 另请参见:
-
MBeanServerFactory
方法摘要 | |
---|---|
Class |
loadClass(String className) 通过类加载器列表加载给定的类名称。 |
Class |
loadClassBefore(ClassLoader stop, String className) 通过类加载器列表加载给定的类名称,在某个给定的类加载器处停止。 |
Class |
loadClassWithout(ClassLoader exclude, String className) 通过类加载器列表加载给定的类名称,不包括某个给定的类加载器。 |
方法详细信息 |
---|
loadClass
Class loadClass(String className) throws ClassNotFoundException
-
通过类加载器列表加载给定的类名称。依次请求 ClassLoaderRepository 的每个 ClassLoader 通过其
ClassLoader.loadClass(String)
方法来加载类。如果它成功返回一个Class
对象,则该对象就是此方法的结果。如果抛出ClassNotFoundException
,则继续搜索下一个 ClassLoader。如果抛出另一个异常,则从此方法传播该异常。如果到达列表的末尾,则抛出ClassNotFoundException
。 -
- 参数:
-
className
- 要被加载的类名称。 - 返回:
- 加载的类。
- 抛出:
-
ClassNotFoundException
- 如果找不到指定的类。
loadClassWithout
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
- 如果找不到指定的类。
loadClassBefore
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
- 如果找不到指定的类。
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |