public interface ClassLoaderRepository
此接口的实例用于保留在MBean服务器中注册的ClassLoaders列表。 它们提供了使用注册的ClassLoaders加载类的必要方法。
ClassLoaderRepository中的第一个ClassLoaderRepository始终是MBean服务器自己的ClassLoader。
当一个MBean在MBean服务器中注册时,如果它是ClassLoader的子类,并且如果没有实现接口PrivateClassLoader ,则将其添加到MBean Server ClassLoaderRepository的ClassLoaderRepository 。 如果随后从MBean服务器注销,它是从去除ClassLoaderRepository 。
ClassLoaderRepository中的MBean的ClassLoaderRepository是重要的。 对于ClassLoaderRepository中的任何两个MBean X和Y ,如果X的注册在Y的注册开始之前ClassLoaderRepository , X必须出现在Y之前。 如果X和Y同时注册,其顺序是不确定的。 一个MBean的注册对应于所述呼叫到MBeanServer.registerMBean(java.lang.Object, javax.management.ObjectName)或的一个MBeanServer种 .createMBean方法。
MBeanServerFactory
| Modifier and Type | Method and Description |
|---|---|
类<?> |
loadClass(String className)
通过类加载器列表加载给定的类名。
|
类<?> |
loadClassBefore(ClassLoader stop, String className)
通过加载器列表加载给定的类名,停止在给定的类名称。
|
类<?> |
loadClassWithout(ClassLoader exclude, String className)
通过类加载器列表加载给定的类名,不包括给定的类名。
|
类<?> loadClass(String className) throws ClassNotFoundException
通过类加载器列表加载给定的类名。 要求ClassLoaderRepository中的每个ClassLoader通过其ClassLoader.loadClass(String)方法加载该类。 如果它成功返回一个类对象,那就是这个方法的结果。 如果它抛出一个ClassNotFoundException ,搜索继续下一个ClassLoader。 如果它引发另一个异常,则从该方法传播异常。 如果达到列表的末尾 ,则会抛出一个ClassNotFoundException 。
className - 要加载的类的名称。
ClassNotFoundException - 找不到指定的类。
类<?> loadClassWithout(ClassLoader exclude, String className) throws ClassNotFoundException
通过类加载器列表加载给定的类名,不包括给定的类名。 来自ClassLoaderRepository的除了exclude之外的每个ClassLoader都被要求通过其ClassLoader.loadClass(String)方法加载该类。 如果它成功返回一个类对象,那就是这个方法的结果。 如果它抛出一个ClassNotFoundException ,继续搜索下一个ClassLoader。 如果它引发另一个异常,则从该方法传播异常。 如果达到列表的末尾,则抛出一个ClassNotFoundException 。
请注意,如果ClassLoaderRepository中的ClassLoader从其loadClass方法调用此方法,则如果ClassLoaderRepository中的另一个ClassLoader在同一时间执行相同操作,则会将其暴露为死锁。 建议使用loadClassBefore(java.lang.ClassLoader, java.lang.String)方法以避免死锁的危险。
className - 要加载的类的名称。
exclude - 要排除的类加载器。
可能为null,在这种情况下,此方法相当于loadClass(className) 。
ClassNotFoundException - 找不到指定的类。
类<?> loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException
通过加载器列表加载给定的类名,停止在给定的类名称。 要求ClassLoaderRepository中的每个ClassLoader通过其ClassLoader.loadClass(String)方法加载该类。 如果它成功返回一个类对象,那就是这个方法的结果。 如果它抛出一个ClassNotFoundException ,搜索继续下一个ClassLoader。 如果它引发另一个异常,则从该方法传播异常。 如果搜索到达stop或列表的末尾 ,则会抛出一个ClassNotFoundException 。
通常,这种方法是从所谓loadClass的方法stop ,咨询,在出现在它之前装载机ClassLoaderRepository 。 通过达到stop停止搜索,避免了并发类加载的潜在死锁。
className - 要加载的类的名称。
stop - 要停止的类加载器。
可能为null,在这种情况下,此方法相当于loadClass(className) 。
ClassNotFoundException - 找不到指定的类。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.