아파치 톰캣
아파치 톰캣 기본 페이지 | |
| 원저자 | 제임스 던컨 데이비드슨 |
|---|---|
| 개발자 | 아파치 소프트웨어 재단 |
| 발표일 | 1999년 |
| 안정화 버전 | |
| 저장소 | Tomcat Repository |
| 프로그래밍 언어 | 자바 |
| 종류 | 서블릿 컨테이너 HTTP 웹 서버 |
| 라이선스 | Apache-2.0 |
| 웹사이트 | tomcat |
아파치 톰캣(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]
같이 보기
[편집]각주
[편집]- ↑ “Tomcat 11.0.24 (markt)”. 2026년 7월 8일. 2026년 7월 9일에 확인함.
- ↑ “Apache Tomcat Configuration Reference - The Realm Component”. Tomcat.apache.org. 2013년 11월 1일에 확인함.
- ↑ The Coyote HTTP/1.1 Connector, Apache
- ↑ “Server Configuration Reference - The Coyote JK Connector”. 《tomcat.apache.org》. 2018년 8월 24일에 확인함.
- ↑ King, Graham (December 20, 2004). “High availability Tomcat”. 《JavaWorld》. 2020년 7월 21일에 확인함.
- 1 2 3 “Apache Tomcat Versions”. 2024년 10월 27일에 확인함.
- ↑ “The Origin Story of Tomcat”. TechNotif. 2015년 4월 24일. 2018년 6월 30일에 원본 문서에서 보존된 문서. 2017년 7월 23일에 확인함.
- ↑ Sinan Si Alhir (1998), 《UML in a Nutshell》, O'Reilly Books, 296쪽, ISBN 978-1-56592-448-2
- ↑ Brittain, Jason; Darwin, Ian F. (2007년 11월 28일), 《Tomcat: The Definitive Guide》 1판, 오라일리 미디어, 320쪽, ISBN 978-0596003180, 2018년 3월 1일에 확인함
- ↑ “Apache TomEE”. Apache OpenEJB.[깨진 링크(과거 내용 찾기)]
- ↑ “The Apache Software Foundation Announces Apache TomEE Certified as Java EE 6 Web Profile Compatible”. MarketWatch. 2011년 10월 4일.
- ↑ “Apache TomEE Web stack gains approval”. 인포월드. 2011년 10월 7일.