[JAVA]ClassLoader 정리

DongbinLim·2024년 11월 12일

JAVA

목록 보기
2/4

Heap 영역에

클래스 로딩하려면 Classpath 안에 있어야 함

java의 표준규약에서 -D 옵션은 커스텀 옵션임

;. : 윈도우 전용
:. : 리눅스 전용
export CLASSPAHT=$CLASSPATH:. -> :.

자바 실행시, 기본적으로 (자바 엔진에 포함된 모듈) 참조하는
클래스 있고,
와스엔진에 쓰는 ,
index.jsp 같은 거는 추가로 클래스패스
이미 톰캣 기동시 바라보게 된어있ㄴ느

/tomcat 안에 있는 곳만 바라보게끔 해야 함.


자바의 특징 : class namespce
- 세 개가 하나의 DNA처럼 고유하게 만듦
클래스 로딩방식
- 동적 로딩
- 런타임 다이나믹 로딩 : 클래스 로딩 후 기동 중에 다른 클래스 로딩(커스텀 로딩 순서 변경)
• 클래스로더 특성 4가지 개념 무조건 알아야 함(위 두개가 가장 중요)
- 계층적 구조
○ 부트스트랩
○ /$javahome/jre/lib
○ so : 자바 엔진 기동 위해 필요한 네이티브 코드
○ java -cp 는 시스템클래스로더에 속하는 클래스패스 설정하는거임
○ 부트스트랩 클래스 패스를 따로 설정할 수 있음 = xbootclassloader
○ jdbc는 tomcat engine 아래에 보통 넣어놓음
○ 계층적 구조에 의해 우선권 높낮이 나뉨
- 상위 우선로드
- 클래스 로더는 한번만 생성하면 끝
• Weblogic의 클래스로더
- EAR(EJB/WAR) : JVM 통해 호스팅하려면 기본 구조
- 신입사원 교육용.pptx
- Tomcat에서 WAS에 호스팅하려면 기본 구조 WAR
○ WAR - webINF-(lib/classes/web.xml)
○ cd web-inf
§ web.xml



서블릿: JSP html화면 나오듯이 나오고, java 코드처럼도 짤 수 있음

서블릿 매핑 : web.xml 들어가면. 누가 main.naver를 호출하면 '이 java코드를 호출해'
web.xml
- 기본적인 이콘딩
- 서블릿 매핑 이뤄져있음

  • EAR
    - WAR
    - WAR별로 클래스 로더 따로 존재
    WAS 안에 특정 Application밖에 못 올라가는 것같지만…
    A WAR, B WAR, C WAR 다 index.jsp 파일이 동일하게 있을때, 어떻게 A, B, C의 index.jsp 파일을 띄울것인가?
    ○ jeus => jeus-web-dd.xml
    ○ weblogic : weblogic.xml
    ○ jboss: jboss-web.xml
    § 공통적으로 context-root (DNS 경로 설정하듯이 ) 설정해서
    • EJB
    ○ 화면이 없음, 로직만 있음.
    ○ PO 하나에서만 사용함.(JEUS 관리 콘솔 북마크 들어가서 -> Deployed Apllication보면 확인 가능함.)

  • EAR도 자체적으로 클래스로더 존재할 수 있음

  • EAR이 참조하는 패스는 WAR나 EJB보다 더 상위에 있음

  • isolation(EAR의 독립성) = EAR 1과 EAR2는 서로 다른 클래스로더 사용함.
    • 하나의 EAR에 있는 WAR가 다른 EAR의 EJB를 사용할 수는 없음(촌수 관계 따지기 X: EAR1에서 SystemClassLoader로 올라갔다가 EAR2로 내려갈수는 없음)

  • Classloader는 언로드가 안 됨.(unalloc 불가능)
    • HotDeploy : 다시 클래스 로딩 하고싶은 경우는 어떻게 하지?(프로세스 종료 없이 컴포넌트 Reload)
    ○ --> 기존 클래스로더 삭제하고, 새로 생성한 클래스로더 다시 로딩.

Weblogic의 클래스로더

0개의 댓글