* BootStrap -> Extensions -> System ClassLoader -> Application 별 ClassLoader 순으로 Chain 생성 됨

* Application 을 Deploy 할 때 마다, 별도의 Class Loader 를 생성하며, Parent 를 System ClassLoader 로 지정한다.

* WebLogic 의 Application ClassLoader 는 3가지 종류 임 (EJB-JAR, WAR, EAR)

- EJB-JAR : 각 EJB Jar 파일 당 1개의 ClassLoader 생성함. 그래서 다른 JAR 파일의 클래스 Instance 는 참조 불가 함.

- WAR : 일반적으로, 보통의 ClassLoader 와 같이 우선순위를 갖으나, WEB-INF/classes 와 WEB-INF/lib 디렉토리의 클래스에 한하여, Parent ClassLoader 보다 WAR ClassLoader 가 우선순위를 갖도록 지정할 수 있다. PreferWebInfClasses 옵션을 true 로 설정하면 가능하다.

- EAR : EAR 로 배포 구조를 갖게되면, WAR ClassLoader 와 EJB-JAR ClassLoader 가 Delegation 관계를 갖으며 생성된다. 즉, EJB-JAR ClassLoader 를 통해 WAR ClassLoader 가 생성되어, WAR ClassLoader 가 EJB ClassLoader 의 Child 가 되므로, WAR 가 EJB 를 사용할 수 있게 되는것이다.
* ClassLoading 순서 : cache 점검 -> 없으면 부모에게 로드 위임 -> 부모 로드 못하면 자신이 로드
반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,