JavaTM Platform
Standard Ed. 6

javax.management.loading
인터페이스 ClassLoaderRepository



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,XY 에 대해 생각해 봅시다. Y 의 등록을 개시하기 전에 X 의 등록이 완료하고 있었을 경우,XY 의 전에 늘어놓을 수 있습니다. XY 가 동시에 등록되었을 경우, 이러한 줄 순서는 불확정이 됩니다. 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 가 throw 되었을 경우, 다음의 ClassLoader 로 계속해 검색을 합니다. 이 ClassLoader 도 예외를 throw 했을 경우, 이 메소드는 예외를 throw 합니다. 리스트의 말미에 이르렀을 경우,ClassNotFoundException 가 throw 됩니다.

파라미터:
className - 로드 되는 클래스의 이름
반환값:
로드 된 클래스
예외:
ClassNotFoundException - 지정된 클래스가 발견되지 않는 경우

loadClassWithout

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 - 지정된 클래스가 발견되지 않는 경우

loadClassBefore

Class <? > loadClassBefore(ClassLoader  stop,
                         String  className)
                         throws ClassNotFoundException 

클래스 로더의 리스트로부터 클래스를 로드해, 지정된 클래스명의 위치에서 처리를 정지합니다. ClassLoaderRepository 내의 ClassLoader 에,ClassLoader.loadClass(String) 메소드를 사용해 클래스를 로드해라라고 하는 명령이 보내집니다. 그 결과, 정상적으로 Class 객체가 돌려주어졌을 경우, 이것이 이 메소드의 반환값이 됩니다. ClassNotFoundException 가 throw 되었을 경우, 다음의 ClassLoader 로 계속해 검색을 합니다. 이 ClassLoader 도 예외를 throw 했을 경우, 이 메소드는 예외를 throw 합니다. 검색이 stop 또는 리스트의 말미에 이르렀을 경우,ClassNotFoundException 가 throw 됩니다.

일반적으로, 이 메소드는,stoploadClass 메소드로부터 불려 갑니다. 이것에 의해,ClassLoaderRepository 내의 지정의 로더보다 전의 로더를 조회할 수가 있습니다. stop 에 이른 시점에서 검색이 종료하므로, 동시 클래스 로드에 의한 데드락을 회피할 수가 있습니다.

파라미터:
className - 로드 되는 클래스의 이름
stop - 클래스 로더. 이 정도치로 처리가 정지된다. null 의 경우, 이 메소드는 loadClass(className) 와 등가가 된다
반환값:
로드 된 클래스
예외:
ClassNotFoundException - 지정된 클래스가 발견되지 않는 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.