|
JavaTM Platform Standard Ed. 6 |
|||||||||
��һ���� ��һ���� | ��� ��� ������ | |||||||||
ժҪ�� Ƕ�� | �ֶ� | ���췽�� | ���� | ��ϸ��Ϣ�� �ֶ� | ���췽�� | ���� |
java.lang.Objectjava.rmi.server.RMIClassLoader
public class RMIClassLoader
RMIClassLoader
����֧���� RMI ���ж�̬����صľ�̬����������������λ�ã�һ������ URL��������ͻ�ȡԶ�̷�Ӧ��������������λ�õķ�������Щ������ RMI ���п��ڱ���ͽ�������а�������ʱʹ�ã�������Զ�̷������õ�ֵ�����һ�������Ӧ�ó���ֱ�ӵ��ã���ģ�� RMI �Ķ�̬�������Ϊ��
���¾�̬������ʵ��
loadClass(URL,String)
loadClass(String,String)
loadClass(String,String,ClassLoader)
loadProxyClass(String,String[],ClassLoader)
getClassLoader(String)
getClassAnnotation(Class)
RMIClassLoaderSpi
��ʵ���ṩ����������Щ����֮һʱ������Ϊ��������ṩ��ʵ��ί����Ӧ�ķ������й�ÿ���������ί�и��ṩ��ʵ������ϸ��Ϣ���ڸ����ض��������ĵ��н�����������
�����ṩ��ʵ�������·�ʽѡ��
java.rmi.server.RMIClassLoaderSpi
������ֵ�����ַ��� "default"
ʱ���ṩ��ʵ�����ǵ��� getDefaultProviderInstance()
�������ص�ֵ�������κ�����ֵ���������ͨ��ϵͳ�������������� ClassLoader.getSystemClassLoader()
������������ֵ�������࣬���Ҹ�����Է���� RMIClassLoaderSpi
�Ҿ���һ�����������Ĺ��췽��������ù��췽���������ṩ��ʵ����������������ԣ�����Щ�����������������Ϊ true��������ʹ�� RMIClassLoader
�Ĵ����׳�һ����ȷ���� Error
����ָʾ��ȡ�ṩ��ʵ��ʧ�ܡ�
META-INF/services/java.rmi.server.RMIClassLoaderSpi
����Դ����ϵͳ���������˵�ǿɼ��ģ�����Դ�����ݽ���Ϊ�ṩ�������ļ��������ڸ��ļ���ָ���ĵ�һ�������������ṩ�������ơ��������ͨ��ϵͳ����������ؾ��и����Ƶ��࣬���Ҹ���ɷ���� RMIClassLoaderSpi
����һ�����������Ĺ��췽��������øù��췽���Դ����ṩ��ʵ��������ҵ�����Դ�������������ķ�ʽʵ�����ṩ�ߣ�������ʹ�� RMIClassLoader
�Ĵ����׳�һ����ȷ���� Error
����ָʾδ�ɹ�����ṩ��ʵ����
getDefaultProviderInstance()
�������ص�ֵ��
RMIClassLoaderSpi
����ժҪ | |
---|---|
static String |
getClassAnnotation(Class<?> cl)
���ر�ʾ�ඨ��λ�õ�ע���ַ�����RMI ���ڱ��������Ķ���ʱ����ע������������ |
static ClassLoader |
getClassLoader(String codebase)
���شӸ����Ļ������� URL ·������������������ |
static RMIClassLoaderSpi |
getDefaultProviderInstance()
���ط����ṩ�߽ӿ� RMIClassLoaderSpi ��Ĭ���ṩ�ߵĹ淶��ʵ���� |
static Object |
getSecurityContext(ClassLoader loader)
�ѹ�ʱ�� ���滻�汾���� Java 2 ƽ̨ v1.2 ��ʼ��RMI ����ʹ�ô˷�������ȡ��������İ�ȫ�����ġ� |
static Class<?> |
loadClass(String name)
�ѹ�ʱ�� �� loadClass(String,String) ����ȡ�� |
static Class<?> |
loadClass(String codebase,
String name)
�ӻ������� URL ·�������ࡣ |
static Class<?> |
loadClass(String codebase,
String name,
ClassLoader defaultLoader)
��ѡ���ʹ���ṩ�ļ������ӻ������� URL ·�������ࡣ |
static Class<?> |
loadClass(URL codebase,
String name)
�ӻ������� URL �����ࡣ |
static Class<?> |
loadProxyClass(String codebase,
String[] interfaces,
ClassLoader defaultLoader)
�ӻ������� URL ·������һ��ʵ��һ����и������ƵĽӿڵĶ�̬�����ࣨ����� Proxy ���� |
���� java.lang.Object �̳еķ��� |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
������ϸ��Ϣ |
---|
@Deprecated public static Class<?> loadClass(String name) throws MalformedURLException, ClassNotFoundException
loadClass(String,String)
����ȡ��
name
���ࡣ
�˷���ί�и� loadClass(String,String)
���� null
��Ϊ��һ���������� name
��Ϊ�ڶ����������д��ݡ�
name
- Ҫ���ص��������
Class
����
MalformedURLException
- ������ڼ�������ض����ṩ�ߵ� URL ��Ч
ClassNotFoundException
- ����ڻ�����������ҵ�����Ķ���loadClass(String,String)
public static Class<?> loadClass(URL codebase, String name) throws MalformedURLException, ClassNotFoundException
codebase
Ϊ null
����˷���������� null
��codebase
���������� loadClass(String,String)
��Ϊ��ͬ��
�˷���ί�и��ṩ��ʵ���� RMIClassLoaderSpi.loadClass(String,String,ClassLoader)
���������ڸ��� URL �ϵ��� URL.toString()
�Ľ����������� codebase
Ϊ null����Ϊ null
����Ϊ��һ��������name
Ϊ�ڶ��������� null
Ϊ�������������д��ݡ�
codebase
- Ҫ���������� URL���� null
name
- Ҫ���ص��������
Class
����
MalformedURLException
- ��� codebase
Ϊ null
�����ڼ�������ض����ṩ�ߵ� URL ��Ч
ClassNotFoundException
- �����ָ�� URL ���ҵ�����Ķ���public static Class<?> loadClass(String codebase, String name) throws MalformedURLException, ClassNotFoundException
�˷���ί�и��ṩ��ʵ���� RMIClassLoaderSpi.loadClass(String,String,ClassLoader)
�������� codebase
��Ϊ��һ��������name
Ϊ�ڶ��������� null
Ϊ�������������д��ݡ�
codebase
- Ҫ���������� URL ���б����ɿո�ָ���������Ϊ null
name
- Ҫ���ص��������
Class
����
MalformedURLException
- ��� codebase
�� null
�Ұ���һ����Ч URL��������� codebase
Ϊ null
�����ڼ�������ض����ṩ�ߵ� URL ��Ч��
ClassNotFoundException
- �����ָ��λ�����ҵ�����Ķ���public static Class<?> loadClass(String codebase, String name, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
defaultLoader
�����ָ��������ָ�����࣬Ȼ�����ͼ�Ӵ���� URL ·���������ࡣ
�˷���ί�и��ṩ��ʵ���� RMIClassLoaderSpi.loadClass(String,String,ClassLoader)
�������� codebase
��Ϊ��һ��������name
Ϊ�ڶ��������� defaultLoader
Ϊ�������������д��ݡ�
codebase
- Ҫ���������� URL ���б����ɿո�ָ���������Ϊ null
name
- Ҫ���ص��������defaultLoader
- Ҫʹ�õ���������������������� null
Class
����
MalformedURLException
- ��� codebase
�� null
�Ұ���һ����Ч URL��������� codebase
Ϊ null
�����ڼ�������ض����ṩ�ߵ� URL ��Ч��
ClassNotFoundException
- �����ָ��λ�����ҵ�����Ķ���public static Class<?> loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader) throws ClassNotFoundException, MalformedURLException
Proxy
����
�������Ľӿ�������ͨ��ʹ�ø��� codebase
�� loadClass(String,String)
�������ص��ࡣ
�˷���ί�и��ṩ��ʵ���� RMIClassLoaderSpi.loadProxyClass(String,String[],ClassLoader)
�������� codebase
��Ϊ��һ��������interfaces
Ϊ�ڶ��������� defaultLoader
Ϊ�������������д��ݡ�
codebase
- Ҫ���������� URL �б����ɿո�ָ������� null
interfaces
- Ҫʵ�ֵĴ�����Ľӿ�����defaultLoader
- Ҫʹ�õ���������������������� null
MalformedURLException
- ��� codebase
�� null
�Ұ���һ����Ч URL��������� codebase
Ϊ null
�����ڼ�������ض����ṩ�ߵ� URL ��Ч��
ClassNotFoundException
- �����ָ��λ�����ҵ�ij��ָ���ӿڵĶ��壬���������̬������Ĵ���ʧ�ܣ����磬��� Proxy.getProxyClass(ClassLoader,Class[])
�׳������ӿ��б��� IllegalArgumentException
��public static ClassLoader getClassLoader(String codebase) throws MalformedURLException, SecurityException
���ص���������� loadClass(String,String)
����������������ͬ codebase
������������������
�˷���ί�и��ṩ��ʵ���� RMIClassLoaderSpi.getClassLoader(String)
�������� codebase
��Ϊ��һ���������д��ݡ�
������ڰ�ȫ����������ʹ�� RuntimePermission("getClassLoader")
Ȩ������ checkPermission
��������ᵼ�� SecurityException
���˷������ṩ��ʵ�ֻ�����ִ�н�һ���İ�ȫ��飬����֤�����������Ƿ�������ӵ������ URL ·���е����� URL ��Ȩ�ޡ�
codebase
- ���ص�������������������� URL �б����ɿո�ָ������� null
MalformedURLException
- ��� codebase
�� null
�Ұ���һ����Ч URL��������� codebase
Ϊ null
�����ڱ�ʶ����������ض����ṩ���� URL ��Ч
SecurityException
- ������ڰ�ȫ���������� checkPermission
�����ĵ���ʧ�ܣ�����������÷�û�����ӵ������ URL ·�������� URL ��Ȩ��public static String getClassAnnotation(Class<?> cl)
�˷���ί�и��ṩ��ʵ���� RMIClassLoaderSpi.getClassAnnotation(Class)
�������� cl
��Ϊ��һ���������д��ݡ�
cl
- Ҫ�����ע�͵���
null
NullPointerException
- ��� cl
Ϊ null
public static RMIClassLoaderSpi getDefaultProviderInstance()
RMIClassLoaderSpi
��Ĭ���ṩ�ߵĹ淶��ʵ�������δ����ϵͳ���� java.rmi.server.RMIClassLoaderSpi
���� RMIClassLoader
��̬����
loadClass(URL,String)
loadClass(String,String)
loadClass(String,String,ClassLoader)
loadProxyClass(String,String[],ClassLoader)
getClassLoader(String)
getClassAnnotation(Class)
������ڰ�ȫ����������ʹ�� RuntimePermission("setFactory")
Ȩ������ checkPermission
��������ᵼ�� SecurityException
��
Ĭ�Ϸ����ṩ��ʵ�������·�ʽʵ�� RMIClassLoaderSpi
��
getClassAnnotation
��������һ����ʾ�������� URL ·����String
��Զ�̷�Ӧʹ�ø�·������ָ����Ķ��塣���ص��ַ����ĸ�ʽ��һ���ɿո�ָ��� URL ·���� ���صĻ��������ַ���ȡ����ָ����Ķ������������
- ������������ϵͳ��������������
ClassLoader.getSystemClassLoader()
����ϵͳ��������ĸ������磬���ڰ�װ��չ�ļ������� ���������������������null
��ʾ������java.rmi.server.codebase
���Ե�ֵ���������һ��ԭ�ȵĻ���ֵ�������δ���ø����ԣ���null
��- ����������������
URLClassLoader
��ʵ�����ص��ַ�����һ�� URL ���ⲿ��ʽ���ɿո�ָ����б����� URL ͨ�����ü�����getURLs
�������ء����URLClassLoader
�ɴ��ṩ�ߴ��������ڵ�����loadClass
��loadProxyClass
����������Ҫ�κ�Ȩ���ɻ�ȡ�����Ļ��������ַ��������������������һ��URLClassLoader
ʵ������������ڰ�ȫ�������������getURLs
�������ص�ÿ�� URL ��Ҫ����һ����checkPermission
���������õ�Ȩ��Ϊ��ÿ�� URL ����openConnection().getPermission()
���ص�Ȩ�ޣ��������Щ���õ��κ�һ���׳�SecurityException
��IOException
����java.rmi.server.codebase
���Ե�ֵ���������ԭ�ȵĻ���ֵ�������δ���ø����ԣ���null
��- �����������������
URLClassLoader
��ʵ������java.rmi.server.codebase
���Ե�ֵ���������ԭ�ȵĻ���ֵ�������δ���ø����ԣ���null
���������������ķ�����ʵ�֣���Щʵ�ֶ�������Ϊ�ɿո�ָ��� URL �б�����Ϊ
codebase
��String
������ÿ�����ö���һ�������������������������ͨ����codebase
�뵱ǰ�̵߳��������������һ��ʹ�ý��б�ʶ�������Thread.getContextClassLoader()
�������ڰ�ȫ������ʱ�����ṩ�߽�ά���������ʵ����������URLClassLoader
��ʵ�������ڲ�������Щ�ڲ���ͨ���丸������������������ URL ·��������� URL �б������롣���codebase
Ϊnull
����������� URL ·����ϵͳ����java.rmi.server.codebase
��ֵ���������ԭ�ȵĻ���ֵ�����ڸ����Ļ������� URL ·������·����Ϊcodebase
�������ݵ���������������еķ���֮һ�ĵ��ã����������������λ�ھ���ָ���������� URL ·���ı����ҵ�ǰ�̵߳�����������������丸���ļ���������������������ļ���������һ�������ļ��������������ӵ����С��ñ���ά����������ļ�������ǿ���ã��Ա����������Ǽ��䶨�����ڲ��������ʱ���������ա�Ϊ�˷�ֹ�������ε�������뱻��ʽ���ص�������ȫ��������������У����δ���ð�ȫ�������������������������ǵ�ǰ�̵߳�����������������ṩ�Ļ������� URL ·�������ԣ����Խ�ֹ��Զ������أ���
getClassLoader
��������ָ���������� URL ·���Ļ��������������������ڰ�ȫ��������������õ���������û�����ӵ��������� URL ·���ϵ����� URL ��Ȩ�ޣ����׳�SecurityException
��
loadClass
�����������·�ʽ���ؾ���ָ�����Ƶ��ࣺ���defaultLoader
��null
���������ȳ���ʹ��defaultLoader
���ؾ���ָ��name
���࣬����ͨ������Class.forName(name, false, defaultLoader)�����defaultLoader
�ɹ��������࣬�ظ��ࡣ����׳�ClassNotFoundException
֮����쳣������쳣�������÷�����Σ�
loadClass
��������ʹ��ָ���������� URL ·���Ļ���������������ؾ���ָ��name
���ࡣ������ڰ�ȫ����������õ��������ı���������ӵ��������� URL �ϵ����� URL ��Ȩ�ޣ�����ʹ�õ�ǰ�̵߳���������������������ǻ��������������
loadProxyClass
�����������·�ʽ���ؾ���ָ���ӿڵĶ�̬�����ࣺ���
defaultLoader
������null
�ҿ���ͨ���ü�������������ָ���ӿڣ���
- ������н����Ľӿڶ�Ϊ
public
���������ȳ��Ի���ڻ�������������ж���Ľ����ӿڵĶ�̬�����ࣨʹ��Proxy.getProxyClass
��������ó����׳�һ��IllegalArgumentException
���������Ի����defaultLoader
�ж���Ľ����ӿڵĶ�̬�����ࡣ����������Զ��׳�IllegalArgumentException
����˷������׳�ClassNotFoundException
������׳��κ������쳣������쳣���������÷���- �����ͬһ��������ж������з�
public
�����ӿڣ����䳢�Ի���ڸü������ж���Ľ����ӿڵĶ�̬�����ࡣ- �����׳�
LinkageError
����Ϊʵ������ָ���ӿڵ��������κμ������ж��壩�������������ָ���Ľӿڿ�ͨ�����������������������
- ������н����ӿڶ�Ϊ
public
���������Ի�û��������н����ӿڵĶ�̬�����ࡣ����ó����׳�IllegalArgumentException
����˷����׳�һ��ClassNotFoundException
��- �����ͬһ��������ж������з�
public
�����ӿڣ��������Ի���ڸü������ж���Ľ����ӿڵĶ�̬�����ࡣ- �����׳�
LinkageError
����Ϊʵ������ָ���ӿڵ��������κμ������ж��壩������Ϊÿ����������ָ���ӿ��׳�
ClassNotFoundException
��
SecurityException
- ������ڰ�ȫ������������ checkPermission
�����ĵ��ý�ʧ��@Deprecated public static Object getSecurityContext(ClassLoader loader)
loader
- �����ȡ��ȫ�����ĵ��������
SecurityManager.getSecurityContext()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
��һ���� ��һ���� | ��� ��� ������ | |||||||||
ժҪ�� Ƕ�� | �ֶ� | ���췽�� | ���� | ��ϸ��Ϣ�� �ֶ� | ���췽�� | ���� |
��Ȩ���� 2007 Sun Microsystems, Inc. ��������Ȩ���� ����������֤��������������ĵ����·ַ�������