포스트

Tomcat, Catalina, Jasper

Tomcat(톰캣)

  • 아파치 소프트웨어 재단(ASF)의 오픈 소스 자바 서블릿 컨테이너이다.
  • 톰캣은 서블릿, JSP, EL, JSTL, WebSocket 등 여러가지 JavaEE 기술을 구현한다.
  • Java 코드를 실행하는 순수 Java HTTP 웹서버이다. (자바 웹 서버 - was)

Tomcat Catalina

  • 톰캣은 여러개의 컴포넌트로 구성되고 그 중 코어 컴포넌트는 카탈리나이다.
  • 카탈리나는 톰캣의 서블릿 스펙의 실질적인 구동을 제공한다.
  • 톰캣 서버를 가동시킬 경우, 카탈리나를 구동시킨 것이라 생각하면 된다.
  • 카탈리나 기본 동작은 톰캣의 7개 config 파일을 편집하여 구현/제어할 수 있다.

Tomcat 설정 파일

  • 7개 config 파일들의 일반적인 위치 : /usr/share/tomcat/conf
  1. catalina.policy
    • JavaEE 스펙에 정의된 표준 보안 정책 구문으로 표현된 카탈리나 자바 클래스의 톰캣 보안 정책이다. 톰캣의 코어 보안정책, 시스템 코드, 웹앱, 카탈리나 자체의 퍼미션(사용권한)이 정의되어 있다.
  2. catalina.properties
    • 카탈리나 클래스를 위한 표준 자바 프로퍼티이다. 보안 패키지 리스트, 클래스 로더 경로 등과 같은 정보이다. 톰캣의 성능 최적화를 위한 Spring 캐시 설정이 포함된다.
  3. logging.properties
    • 이 파일은 임계값, 로그값의 위치와 같은 카탈리나의 로깅 기능을 구성하는 방법이다. 로그의 모든 항목은 JDK의 로깅 구현 대신, 톰캣이 자동으로 사용하는 commons-logging 구현인 JULI를 참조한다.
  4. context.xml
    • 이 파일은 톰캣에 구동되는 웹앱에 대해 로드될 정보이다.
  5. server.xml
    • 톰캣의 메인 config 파일이다. 자바 서블릿 스펙에 지정된 계층적 문법을 사용하여, 카탈리나의 초기 상태 구성, 톰캣을 부팅하고 구성 요소의 빌드 순서를 정의한다. 이 xml 파일에 대한 자세한 내용은 아파치 홈페이지에서 확인 가능하다.
  6. tomcat-users.xml
    • 톰캣 서버의 많은 유저, 패스워드, 유저롤(Role)에 관한 정보와 데이터에 액세스하는 신뢰된 영역(JNDI, JDBC 등)에 대한 정보가 들어있다.
  7. web.xml
    • 버퍼 크기, 디버깅 레벨, 클래스패스와 같은 Jasper 옵션, MIME 유형 및 웹페이지 Index 파일 같은 서블릿 정의를 포함하여, 톰캣 인스턴스에 로드되는 모든 응용프로그램에 적용하는 옵션 또는 값이다.

재스퍼(Jasper)

  • 톰캣의 JSP 엔진이다.
  • 재스퍼는 JSP파일을 파싱하여 서블릿(JavaEE) 코드로 컴파일한다.
  • JSP 파일의 변경을 감지하여 리컴파일 작업도 수행한다.

JSP 변경시 서버를 재실행하지 않아도 되는 이유

  • JSP 파일의 변경은 서블릿 컨테이너에 의해 감지된다
  • 해당 JSP 파일에 대한 서블릿의 service() 메서드가 호출되어 변경 내용을 반영한다.
  • 이를 통해 JSP 파일의 수정을 서블릿 생명주기의 특성을 이용하여 톰캣 재실행 없이도 반영할 수 있다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.