2011년 11월 19일 토요일

WAS Class Loader

http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/crun_classload.html

클래스 로더는 클래스 파일을 찾고 로드합니다.
클래스 로더는 Name Space를 갖습니다.
런타임 환경은 클래스 로더를 사용하여 응용프로그램에 대한 새 클래스를 찾고 로드합니다.

JVM 클래스 로더

  • 부트스트랩 클래스 로더(= Bootstrap 클래스 로더 = primordial 클래스 로더)는 부팅 클래스 경로(jre/lib,-Xbootclasspath) 상의 클래스를 찾고 로드합니다.
  • 확장자 클래스 로더(= extension 클래스 로더 = standard extensions 클래스 로더)는 시스템 특성 java.ext.dirs(=jre/lib/ext) 상의 클래스를 찾고 로드합니다.
  • CLASSPATH 클래스 로더(= system 클래스 로더 = application 클래스 로더)는 환경 변수 CLASSPATH 상의 클래스를 찾고 로드합니다.




WebSphere 확장 클래스 로더

  • 런타임에 필요한 WebSphere Application Server 클래스를 로드합니다.
  • 시스템 특성 ws.ext.dirs 상의 클래스를 찾고 로드합니다.


응용프로그램 모듈 클래스 로더

  • 응용프로그램의 클래스 및 JAR 파일을 로드하며 Java EE 클래스 로딩 규칙을 준수합니다.


웹 모듈 클래스 로더

  • WEB-INF/classesWEB-INF/lib를 로드합니다.




클래스를 로드해야 할 때마다 클래스 로더는 대개 요청을 상위 클래스 로더에 위임합니다.
어떤 상위 클래스 로더도 클래스를 찾을 수 없는 경우, 원래 클래스 로더가 클래스를 로드하려 시도합니다.
요청은 상위 클래스 로더로만 이동하며 하위 클래스 로더로 이동할 수 없습니다.


클래스 로더 정책 (하나의 로더/다수의 로더_

예 1)

Server's application class-loader policy: Single
Application's WAR class-loader policy: Module

Application 1
 Module: EJB1.jar
 Module: WAR1.war   
  MANIFEST Class-Path: Dependency1.jar
  WAR Classloader Policy = Module
Application 2  
 Module: EJB2.jar
  MANIFEST Class-Path: Dependency2.jar
 Module: WAR2.war
  WAR Classloader Policy = Application




예2)
Server's application class-loader policy: Multiple
Application's WAR class-loader policy: Module

Application 1
 Module: EJB1.jar
 Module: WAR1.war   
  MANIFEST Class-Path: Dependency1.jar
  WAR Classloader Policy = Module
Application 2  
 Module: EJB2.jar
  MANIFEST Class-Path: Dependency2.jar
 Module: WAR2.war
  WAR Classloader Policy = Application




클래스 로드 모드 (상위 로더/ 하위 로더)
클래스 로더 위임 모드는 클래스 로더 순서라고도 하며,
클래스 로드시 상위 클래스 로더로 위임하는지 여부를 결정합니다.

다음 설정은 클래스 로더의 모드를 판별합니다.
  • Application Server의 응용프로그램 클래스 로더 정책이 Single인 경우에는 서버 레벨 모드 값이 응용프로그램 클래스 로더의 모드를 정의합니다.
  • Application Server의 응용프로그램 클래스 로더 정책이 Multiple인 경우에는 응용프로그램 레벨 모드 값이 응용프로그램 클래스 로더의 모드를 정의합니다.
  • 응용프로그램의 WAR 클래스 로더 정책이 Module인 경우에는 모듈 레벨 모드 값이 WAR 클래스 로더의 모드를 정의합니다.

댓글 없음:

댓글 쓰기