[Spring Boot] 웹 애플리케이션 컨테이너 + WAR 파일의 특성

이지현·2022년 5월 2일
0

SpringBoot

목록 보기
1/2
post-thumbnail

💻 1. 웹 애플리케이션 컨테이너

1-1. 웹 애플리케이션 컨테이너란?

  • 배포되는 공간을 뜻한다.

  • 일반적으로 HTML 과 같은 정적 파일들을 전달해 주는 역할을 한는 서버를 웹 서버 라고 하고
    PHP, JSP, ASP 와 같은 언어들을 사용해서 동적인 페이지들을 생성 가능한 서버를 웹 애플리케이션 서버 또는 자바 계열에서는 웹 애플리케이션 컨테이너 라고 한다.

  • 일반적으로는 줄여서 WAS라고 부른다.



1-2. 클래서 로더

  • 자바 코드를 작성한 후 컴파일하면 해당 코드는 JVM 에서 실행 가능한 상태가 된다.
    이 때 JVM 이 클래스를 실행하기 위해 클래스를 로딩하는 과정 이 필요하다.

  • 그 과정을 수행해주는 역할을 하는 것이 클래스 로더 이다.

  • 우리는 종종 새로운 프레임워크를 테스트해 볼 때나 다른 사람이 만든 프로젝트를 로컬에서 실행할 때 ClassNotFoundException 과 같은 에러를 만나게 되는데 , 해당 에러는 클래스 로더가 추가된 라이브러리 또는 클래스를 인식하지 못해서 발생하는 오류이다.



1-3. 클래스 로더의 특징

  • 1. 구조가 계층적이다.

    상위 클래스 로더에서 하위 클래스 로더를 갖는 방식이며, 최상위 클래스 로더는 부트스트랩 클래스 로더다.

  • 2. 클래스 로딩을 위임할 수 있다.

  • 3. 클래스 로더는 가시적인 규약이 있다.

가시적인 규약이란?

  • 클래스를 로딩할 때 가능한 범위를 말한다.
    자식 클래스 로더는 클래스 로딩 요청 위임을 통해 부모 클래스 로더가 로딩한 클래스를 찾을 수 있지만, 부모 클래스 로더는 자식 클래스 로더가 로딩할 클래스를 알 수 없다.
  • 4. 클래스 언로딩 불가능이다.
    • 즉 클래스 로더로 로딩한 클래스들을 언로딩할 수 없다.
    • 클래스 로더가 로딩한 클래스를 언로딩할 수 없으므로 가비지 컬렉터가 동작하거나 WAS가 재식할 떄 초기화한다.



1-4. 클래스 로더의 유형

  • 클래스 로더에는 네 가지 유형이 있다.

    1. 부트스트랩 클래스 로더
    1. 확장 클래스 로더
    1. 시스템 클래스 로더
    1. 개발자가 만든 사용자정의 클래스 로더


💻 2. WAR 파일의 특성

  • 배포 할 때 로컬 실행 프로그램은 JAR 로 패키징하고 웹은 WAR 로 패키징한다.

  • WAR 는 압축 파일에 자바 관련 규약이 포함된 것이며 바로 WEB-INF 폴더다
    웹 애플리케이션 컨테이너는 WAR 파일의 WEB-INF 폴더를 기준으로 클래스 파일들을 로드한다.

  • WARwebapp 또는 web 과 같은 이름으로 HTML, JavaScript, CSS, JSP 파일처럼 브라우저에서 보여줘야 하는 정적 자원을 관리하기 위한 폴더 이다.

profile
개발 공부 중인 지현이

0개의 댓글