|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface ClassLoaderRepository
이 인터페이스의 인스턴스는, MBean 서버에 등록된 ClassLoader 의 리스트를 보관 유지하기 위해서 사용됩니다. 이러한 인스턴스는, 등록이 끝난 ClassLoader 를 사용해 클래스를 로드하기 위해서(때문에) 필요한 메소드를 제공합니다.
ClassLoaderRepository
내의 최초의 ClassLoader 는, 항상 MBean 서버 고유의 ClassLoader 입니다.
ClassLoader
의 서브 클래스가 되어 있지 않고,PrivateClassLoader
인터페이스를 구현하고 있지 않는 MBean 를 MBean 서버에 등록하면(자), 이 MBean 는, MBean 서버의 ClassLoaderRepository
의 말미에 추가됩니다. 이 MBean 의 등록을 해제하면(자),ClassLoaderRepository
로부터 이 MBean 가 삭제됩니다.
ClassLoaderRepository
내의 MBean 의 줄 순서에는 의미가 있습니다. ClassLoaderRepository
내의 임의의 2 개의 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
가 throw 되었을 경우, 다음의 ClassLoader 로 계속해 검색을 합니다. 이 ClassLoader 도 예외를 throw 했을 경우, 이 메소드는 예외를 throw 합니다. 리스트의 말미에 이르렀을 경우,ClassNotFoundException
가 throw 됩니다.
className
- 로드 되는 클래스의 이름
ClassNotFoundException
- 지정된 클래스가
발견되지 않는 경우Class <? > loadClassWithout(ClassLoader exclude, String className) throws ClassNotFoundException
클래스 로더의 리스트로부터, 전회 지정된 이름의 클래스 이외의 클래스를 로드합니다. exclude
를 제외하는 ClassLoaderRepository 내의 ClassLoader 에,ClassLoader.loadClass(String)
메소드를 사용해 클래스를 로드해라라고 하는 명령이 보내집니다. 그 결과, 정상적으로 Class
객체가 돌려주어졌을 경우, 이것이 이 메소드의 반환값이 됩니다. ClassNotFoundException
가 throw 되었을 경우, 다음의 ClassLoader 로 계속해 검색을 합니다. 이 ClassLoader 도 예외를 throw 했을 경우, 이 메소드는 예외를 throw 합니다. 리스트의 말미에 이르렀을 경우,ClassNotFoundException
가 throw 됩니다.
ClassLoaderRepository 내에, 이 메소드를 loadClass
메소드로부터 호출하는 ClassLoader 가 있다고 합니다. 같은 ClassLoaderRepository 내에, 이 ClassLoader 와 동시에 같은 처리를 실시하는 ClassLoader 가 이제(벌써) 1 개(살) 존재하는 경우, 어느 쪽인지가 데드락이 됩니다. 데드락을 회피하기 위해서는,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
가 throw 되었을 경우, 다음의 ClassLoader 로 계속해 검색을 합니다. 이 ClassLoader 도 예외를 throw 했을 경우, 이 메소드는 예외를 throw 합니다. 검색이 stop
또는 리스트의 말미에 이르렀을 경우,ClassNotFoundException
가 throw 됩니다.
일반적으로, 이 메소드는,stop
의 loadClass
메소드로부터 불려 갑니다. 이것에 의해,ClassLoaderRepository
내의 지정의 로더보다 전의 로더를 조회할 수가 있습니다. stop
에 이른 시점에서 검색이 종료하므로, 동시 클래스 로드에 의한 데드락을 회피할 수가 있습니다.
className
- 로드 되는 클래스의 이름stop
- 클래스 로더. 이 정도치로 처리가 정지된다. null 의 경우,
이 메소드는 loadClass(className)
와 등가가 된다
ClassNotFoundException
- 지정된 클래스가
발견되지 않는 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.