본문으로 이동

아파치 톰캣

위키백과, 우리 모두의 백과사전.
아파치 톰캣
원저자제임스 던컨 데이비드슨
개발자아파치 소프트웨어 재단
발표일1999년(27년 전)(1999)
안정화 버전
11.0.24[1] 위키데이터에서 편집하기 / 2026년 7월 8일
저장소Tomcat Repository
프로그래밍 언어자바
종류서블릿 컨테이너
HTTP 웹 서버
라이선스Apache-2.0
웹사이트tomcat.apache.org 위키데이터에서 편집하기

아파치 톰캣(Apache Tomcat, 간단히 "톰캣")은 자카르타 EE자카르타 서블릿, 자카르타 서버 페이지, 자카르타 익스프레션 언어(Expression Language), 웹소켓, 자카르타 어노테이션(Annotations) 및 자카르타 인증(Authentication) 기술을 자유 및 오픈 소스로 구현한 것이다. 자바 코드가 실행될 수 있는 "순수 자바" HTTP 웹 서버 환경을 제공한다. 따라서 완전한 자카르타 EE 애플리케이션 서버는 아니지만, 자바애플리케이션 서버에 해당한다.

톰캣은 아파치 소프트웨어 재단의 후원 아래 개방형 개발자 커뮤니티에 의해 개발 및 유지관리되며, 아파치 라이선스 2.0 라이선스로 배포된다.

구성 요소

[편집]

톰캣 4.x는 카탈리나(Catalina, 서블릿 컨테이너), 코요테(Coyote, HTTP 커넥터) 및 재스퍼(Jasper, JSP 엔진)와 함께 출시되었다.

카탈리나

[편집]

카탈리나는 톰캣의 서블릿 컨테이너이다. 카탈리나는 썬 마이크로시스템즈서블릿 및 자바서버 페이지(JSP) 사양을 구현한다. 톰캣에서 Realm 요소는 해당 사용자에게 할당된 사용자 이름, 비밀번호 및 역할(유닉스 그룹과 유사함)의 "데이터베이스"를 나타낸다. Realm의 다양한 구현을 통해 카탈리나를 이러한 인증 정보가 이미 생성 및 유지 관리되고 있는 환경에 통합한 다음, 서블릿 사양에 설명된 대로 해당 정보를 사용하여 컨테이너 관리 보안(Container Managed Security)을 구현할 수 있다.[2]

코요테

[편집]

코요테는 웹 서버로서 HTTP 1.1 및 2 프로토콜을 지원하는 톰캣용 커넥터 구성 요소이다. 이를 통해 명목상 자바 서블릿 또는 JSP 컨테이너인 카탈리나가 로컬 파일을 HTTP 문서로 제공하는 일반적인 웹 서버 역할도 수행할 수 있다.[3] 코요테는 특정 TCP 포트에서 서버로 들어오는 연결을 수신 대기하고 요청을 톰캣 엔진으로 전달하여 요청을 처리하고 요청한 클라이언트에 응답을 다시 보낸다. 또 다른 코요테 커넥터인 Coyote JK도 비슷하게 수신 대기하지만, 요청을 JK 프로토콜을 사용하여 아파치와 같은 다른 웹 서버로 전달한다.[4] 이는 보통 더 나은 성능을 제공한다.

재스퍼

[편집]

재스퍼는 톰캣의 JSP 엔진이다. 재스퍼는 JSP 파일을 구문 분석하여 (카탈리나가 처리할 수 있는) 서블릿 형태의 자바 코드로 컴파일한다. 런타임에 재스퍼는 JSP 파일의 변경 사항을 감지하고 이를 다시 컴파일한다.

버전 5부터 톰캣은 썬 마이크로시스템즈의 JSP 2.0 사양을 구현한 재스퍼 2를 사용한다. 재스퍼에서 재스퍼 2로 넘어오면서 다음과 같은 중요한 기능들이 추가되었다.

  • JSP 태그 라이브러리 풀링(Pooling) – JSP 파일의 각 태그 마크업은 태그 핸들러 클래스에 의해 처리된다. 태그 핸들러 클래스 객체는 풀링되어 전체 JSP 서블릿에서 재사용될 수 있다.
  • 백그라운드 JSP 컴파일 – 수정된 JSP 자바 코드를 다시 컴파일하는 동안에도 이전 버전을 서버 요청에 계속 사용할 수 있다. 새 JSP 서블릿의 재컴파일이 완료되면 이전 JSP 서블릿은 삭제된다.
  • 포함된 페이지 변경 시 JSP 재컴파일 – 런타임에 페이지를 JSP에 삽입하거나 포함할 수 있다. JSP 파일 자체의 변경뿐만 아니라 포함된 페이지가 변경될 때도 JSP가 다시 컴파일된다.
  • JDT 자바 컴파일러 – 재스퍼 2는 앤트Javac 대신 이클립스 JDT(Java Development Tools) 자바 컴파일러를 사용할 수 있다.

톰캣 7 출시와 함께 세 가지 새로운 구성 요소가 추가되었다.

클러스터

[편집]

이 구성 요소는 대규모 애플리케이션을 관리하기 위해 추가되었다. 여러 기술을 통해 달성할 수 있는 부하분산에 사용된다. 클러스터링 지원에는 현재 JDK 버전 1.5 이상이 필요하다.

고가용성

[편집]

라이브 환경에 영향을 주지 않고 시스템 업그레이드(예: 새 릴리스, 변경 요청) 일정을 용이하게 하기 위해 고가용성 기능이 추가되었다. 이는 메인 포트에서 메인 서버가 업그레이드되는 동안 라이브 트래픽 요청을 다른 포트의 임시 서버로 파견함으로써 수행된다. 이는 트래픽이 많은 웹 애플리케이션에서 사용자 요청을 처리하는 데 매우 유용하다.[5]

기능

[편집]

톰캣 9.x는 서블릿 4.0 및 JSP 2.3 사양을 구현한다.[6]

톰캣 10.1.x는 서블릿 6.0 및 JSP 3.1 사양을 구현한다.[6]

톰캣 11.x는 서블릿 6.1 및 JSP 4.0 사양을 구현한다.[6]

역사

[편집]

톰캣은 1998년 11월에[7] 썬 마이크로시스템즈의 소프트웨어 아키텍트인 제임스 던컨 데이비드슨에 의해 서블릿 참조 구현으로 시작되었다. 그는 나중에 이 프로젝트가 오픈 소스가 되도록 도왔으며, 썬 마이크로시스템즈가 아파치 소프트웨어 재단에 프로젝트를 기부하는 데 핵심적인 역할을 했다. 아파치 앤트 소프트웨어 빌드 자동화 도구는 톰캣을 오픈 소스 프로젝트로 만드는 과정의 부작용으로 개발되었다.

데이비드슨은 처음에 이 프로젝트가 오픈 소스가 되기를 희망했고, 많은 오픈 소스 프로젝트들이 표지에 동물이 그려진 오라일리 미디어 서적과 연관되어 있었기 때문에 프로젝트 이름을 동물의 이름을 따서 짓기를 원했다. 그는 톰고양이(Tomcat)라는 이름을 생각해 냈는데, 그 이유로 이 동물이 스스로를 돌볼 수 있는 존재를 나타낸다고 판단했기 때문이다. 비록 톰캣이라는 이름은 이미 다른 오라일리 서적 제목에 사용되고 있었지만,[8] 2003년 오라일리가 표지에 눈표범이 그려진 톰캣 책을 출판하면서 동물 표지를 보고 싶다는 그의 소망은 결국 이루어졌다.[9]

커뮤니티

[편집]

아파치 소프트웨어는 사용자와 개발자 메일링 리스트가 모두 참여하는 커뮤니티 프로세스의 일환으로 구축된다. 개발자 리스트는 다음 릴리스의 구축 및 테스트에 대한 논의가 이루어지는 곳이며, 사용자 리스트는 사용자가 개발자 및 다른 사용자들과 문제를 논의할 수 있는 곳이다.

무료 아파치 톰캣 리소스 및 커뮤니티 중 일부로는 Tomcatexpert.com(대규모 프로덕션 환경에서 아파치 톰캣을 운영하는 개발자와 운영자를 위해 스프링소스가 후원하는 커뮤니티)과 MuleSoft의 Apache Tomcat Resource Center(다양한 버전의 톰캣 설치, 업데이트, 구성, 모니터링, 문제 해결 및 보안에 대한 교육 가이드를 제공함)가 있다.

아파치 TomEE

[편집]

아파치 TomEE("토미"라고 발음)는 아파치 톰캣의 엔터프라이즈 에디션(Tomcat + Java/Jakarta EE = TomEE)으로, 아파치 OpenEJB, 아파치 오픈웹빈즈, 아파치 OpenJPA, 아파치 마이페이스 등을 포함한 여러 자바 엔터프라이즈 프로젝트를 결합한 것이다.[10] 2011년 10월, 이 프로젝트는 오라클로부터 Java EE 6 웹 프로파일의 호환 구현으로 인증을 획득했다.[11][12]

같이 보기

[편집]

각주

[편집]
  1. Tomcat 11.0.24 (markt). 2026년 7월 8일. 2026년 7월 9일에 확인함.
  2. Apache Tomcat Configuration Reference - The Realm Component. Tomcat.apache.org. 2013년 11월 1일에 확인함.
  3. The Coyote HTTP/1.1 Connector, Apache
  4. Server Configuration Reference - The Coyote JK Connector. tomcat.apache.org. 2018년 8월 24일에 확인함.
  5. King, Graham (December 20, 2004). High availability Tomcat. JavaWorld. 2020년 7월 21일에 확인함.
  6. 1 2 3 Apache Tomcat Versions. 2024년 10월 27일에 확인함.
  7. The Origin Story of Tomcat. TechNotif. 2015년 4월 24일. 2018년 6월 30일에 원본 문서에서 보존된 문서. 2017년 7월 23일에 확인함.
  8. Sinan Si Alhir (1998), UML in a Nutshell, O'Reilly Books, 296쪽, ISBN 978-1-56592-448-2
  9. Brittain, Jason; Darwin, Ian F. (2007년 11월 28일), Tomcat: The Definitive Guide 1판, 오라일리 미디어, 320쪽, ISBN 978-0596003180, 2018년 3월 1일에 확인함
  10. Apache TomEE. Apache OpenEJB.[깨진 링크(과거 내용 찾기)]
  11. The Apache Software Foundation Announces Apache TomEE Certified as Java EE 6 Web Profile Compatible. MarketWatch. 2011년 10월 4일.
  12. Apache TomEE Web stack gains approval. 인포월드. 2011년 10월 7일.

외부 링크

[편집]