개요


이번 글에서는 Apache Tomcat의 디렉토리 구조와 각 디렉토리 안의 파일들이 어떤 기능을 수행하는지 알아보고자 한다.

본 글은 Apache Tomcat 9 버전을 기준으로 작성되었다.

 

 

Tomcat 디렉토리 구조


/bin

startup, shutdown, 기타 스크립트가 존재한다. sh 파일(유닉스 시스템) bat 파일(윈도우 시스템) 기능적으로 동일하다.

/conf

설정 파일과 DTD 연관된 파일이 존재한다. 가장 중요한 파일인 server.xml 있으며 파일은 컨테이너의 주요 설정 파일이다.

/logs

기본적으로 디렉토리에 로그 파일이 생성된다.

/webapps

기본 webapps 위치하는 디렉토리이다.

/lib

classpath 추가되는 리소스가 위치한 디렉토리이다.

/work

Jsp 파일을 서블릿 형태로 변환한 java 파일과 class 파일이 저장되는 디렉토리이다.

/temp

JVM 사용되는 임시 디렉토리이다.

 

bin 디렉토리 파일


bat 파일은 윈도우에서 실행하는 batch 파일, sh 파일은 유닉스 계열에서 실행하는 shell script 파일이다.

 

bootstrap.jar

Tomcat 서버가 구동될 때 사용되는 main() 메소드가 포함되어 있으며 클래스 로더가 클래스를 구현하는데에 필수적이다.

tomcat-juil.jar

로깅을 구현하는 java.util.logging API를 포함하고 있는 클래스이다.

common-daemon.jar

Apache Commons Daemon 프로젝트에 필요한 클래스이다.

Catalina.sh 파일에 의해 빌드되지 않으며 bootstrap.jar 파일에 의해 참조된다.

catalina.sh

CATALINA 서버의 제어 스크립트이다.

ciphers.sh

지정된 알고리즘을 사용하는 다이제스트 암호를 설정하는 스크립트이다.

configtest.sh

CATALINA 서버의 설정 스크립트이다.

daemon.sh

Common Daemon에 사용되는 스크립트이다.

digest.sh

지정된 알고리즘을 사용하는 다이제스트 암호를 설정하는 스크립트이다.

makebase.sh

Tomcat 실행에 필요한 분산 디렉토리 구조를 생성하는 스크립트이다.

setclasspath.sh

JAVA_HOME 또는 JRE_HOME이 세팅되지 않았을 경우 세팅한다.

shutdown.sh

CATALINA 서버를 중지하는 스크립트이다.

startup.sh

CATALINA 서버를 시작하는 스크립트이다.

tool-wrapper.sh

커맨드 라인 도구에서 사용되는 Wrapper 스크립트이다.

version.sh

Tomcat의 정보를 표시해주는 스크립트이다.

 

conf 디렉토리 파일


catalina.policy

Tomcat의 보안 정책을 설정하는 파일이다.

Catlinasecurity 옵션으로 실행될 때 시행되는 보안 정책을 설정할 수 있다.

catalina.properties

서버를 시작할 때 검색하는 서버, 공유 로더, JAR 등의 정보를 포함한다.

context.xml

세션, 쿠키 저장 경로등을 지정하는 설정 파일이다.

jaspic-providers.xml

사용자 인증 제공 방법에 대해 정의한 파일

logging.properties

Tomcat 인스턴스의 로깅 설정 파일이다.

tomcat-juli.jar 라이브러리를 활용하여 로깅 서비스를 제공한다.

server.xml

Tomcat 설정에서 가장 중요한 파일이다.

Service, Connector, Host 등과 같은 주요 기능을 설정할 수 있다.

tomcat-users.xml

Tomcat manager 기능을 사용하기 위해 사용자 권한을 설청하는 파일이다.

web.xml

Tomcat의 환경설정 파일이며 서블릿, 필터, 인코딩 등을 설정할 수 있다.

lib 디렉토리 파일


annotations-api.jar

자바EE 어노테이션 클래스 파일

catalina.jar

Tomcat Catalina 서블릿 컨테이너를 구현하는 파일

catalina-ant.jar

Tomcat Catalina Ant 작업 파일

catalina-ha.jar

고가용성 패키지 파일

catalina-storeconfig.jar

서버 상태의 흐름을 XML 설정파일로 생성한다.

catalina-tribes.jar

그룹 커뮤니케이션 패키지 파일

ecj-*.jar

이클립스 JDT 자바 컴파일러 파일

el-api.jar

EL 3.0 API 파일

jasper.jar

Tomcat Jasper JSP 컴파일러와 런타임 파일

jasper-el.jar

Tomcat Jasper EL 구현 파일

jsp-api.jap

JSP 2.3 API 파일

servlet-api.jar

Servlet 4.0 API 파일

tomcat-api.jar

Tomcat에 의해 정의되는 몇몇 인터페이스 파일

tomcat-coyote.jar

Tomcat connector와 유틸리티 클래스 파일

tomcat-dpcp.jar

데이터베이스 커넥션 풀을 구현하는 파일

tomcat-i18n-**.jar

Tomcat 언어 패키지 파일

tomcat-jdbc.jar

Tomcat JDBC pool로 알려진 대체 데이터베이스 커넥션 풀을 구현하는 파일

tomcat-util.jar

Apache Tomcat의 다양한 컴포넌트에서 사용되는 일반 클래스 파일

tomcat-websocket.jar

WebSocket 1.1 구현 파일

websocket-api.jar

Websocket 1.1 API 파일

 

 

참조


Apache Tomcat 9 Docs : https://tomcat.apache.org/tomcat-9.0-doc/index.html

 

개요


Apache Tomcat은 자바 서블릿 및 JSP 기술의 오픈 소스 소프트웨어를 구현한 것이다.

Apache Tomcat은 현재 여러 버전이 사용되고 있으며 각 버전마다 요구하는 사양이 다르기 때문에 잘 살펴보고 버전을 선택해야 한다.

 

Apache Tomcat Version


Servlet Spec JSP Spec EL Spec WebSocket Spec JASPIC Spec Apache Tomcat Version Lastest Realeased Version Supported java Version
4.0 2.3 3.0 1.1 1.1 9.0.x 9.0.26 8 and later
3.1 2.3 3.0 1.1 1.1 8.5.x 8.5.46 7 and later
3.1 2.3 3.0 1.1 N/A 8.0.x (superseded) 8.0.53 (superseded) 7 and later
3.0 2.2 2.2 1.1 N/A 7.0.x 7.0.96 6 and later
(7 and later for WebSocket)
2.5 2.1 2.1 N/A N/A 6.0.x (archived) 6.0.53 (archived) 5 and later
2.4 2.0 N/A N/A N/A 5.5.x (archived) 5.5.36 (archived) 1.4 and later
2.3 1.2 N/A N/A N/A 4.1.x (archived) 4.1.40 (archived) 1.3 and later
2.2 1.1 N/A N/A N/A 3.3.x (archived) 3.3.2 (archived) 1.1 and later

현재 톰캣은 9버전까지 출시되었으며 2019-09-23 기준으로 최신 마이너 버전은 9.0.26이다.

 

Apache Tomcat 공식 홈페이지에서 7 이하의 버전에 대한 다운로드와 문서도 제공하고 있지만 최신의 버전일수록 성능이 좋고 커뮤니티의 지원이 활발하므로 최신 버전을 사용할 것을 권장한다.

 

Apache Tomcat 9


Apache Tomcat 9 버전은 현재 개발에 집중하고 있다.

Tomcat 8.0, 8.5를 기반으로 하며 Servlet 4.0, JSP 2.3, EL 3.0, WebSocket 1.1 및 JASPIC 1.1 사양 (JAVA EE 8 플랫폼에서 요구하는 버전)을 구현한다.

주요 개선사항은 다음과 같다.

 

  • HTTP/2에 대한 지원 추가(Apache Tomcat 9.0.0 이후 Java 9에서 실행해야 함) 또는 설치 중인 Tomcat Native 라이브러리)
  • JSSE 커넥터(NIO 및 NIO2)에서 TLS 지원을 위한 OpenSSL 사용 지원 추가
  • TLS 가상 호스팅(SNI) 지원 추가

Apache Tomcat 8


Apache Tomcat 8.0은 Tomcat 7.0.x를 기반으로 하며 Servlet 3.1, JSP 2.3, EL 3.0 및 WebSocket 1.1 사양을 구현한다. 

주요 개선사항은 다음과 같다.

 

  • 이전 버전에서 제공되는 여러 리소스 확장 기능을 대체하기 위한 단일 공통 리소스 구현

Apache Tomcat 8.5는 Apache Tomcat 8.0.x와 동일한 Servlet, JSP, EL 및 WebSocket 사양 버전을 지원한다.

그 외에도 JASPIC 1.1 규격을 구현한다.

현재 Tomcat 8.0은 8.5로 대체되어 사용되지않는다.

Tomcat 8.5의 주요 개선사항은 다음과 같다.

 

  • HTTP/2에 대한 지원 추가(Tomcat Native 라이브러리 필요)
  • JSSE 커넥터(NIO 및 NIO2)에서 TLS 지원을 위한 OpenSSL 사용 지원 추가
  • TLS 가상 호스팅(SNI) 지원 추가

Apache Tomcat 8.5에서 다음 기술이 제거되었다.

 

  • HTTP 및 AJP 커넥터의 BIO 구현
  • Comet API 지원

Apache Tomcat 7


Apache Tomcat 7.x는 Tomcat 6.0.x의 개선 사항을 기반으로 하며 Servlet 3.0, JSP 2.2, EL 2.2 및 WebSocket 1.1 사양을 구현한다.

주요 개선사항은 다음과 같다.

 

  • 웹 애플리케이션 메모리 누수 감지 및 방지
  • Manager 및 Host Manager 애플리케이션의 보안 향상
  • 일반 CSRF 보호
  • 웹 응용 프로그램에 외부 콘텐츠 직접 포함 지원
  • 리팩터링(커넥터, 라이프사이클) 및 많은 내부 코드 정리

참조


Apache Tomcat Which Version : https://tomcat.apache.org/whichversion.html

+ Recent posts