Tomcat은 무엇입니까? 원래 자바 서블릿 컨테이너

Apache Tomcat은 Java Servlet, JSP (JavaServer Pages) 및 WebSockets API와 같은 몇 가지 핵심 Java 엔터프라이즈 사양을 구현하는 수명이 긴 오픈 소스 Java 서블릿 컨테이너입니다.

Apache Software Foundation 프로젝트 인 Tomcat은 Java 이후 4 년 만인 1998 년에 처음 출시되었습니다. Tomcat은 첫 번째 Java Servlet API 및 JSP 사양에 대한 참조 구현으로 시작되었습니다. 더 이상 이러한 기술에 대한 참조 구현은 아니지만 Tomcat은 가장 널리 사용되는 Java 서버로 남아 있으며 우수한 확장 성과 함께 잘 테스트되고 입증 된 핵심 엔진을 자랑합니다.

이 짧은 소개에서는 많은 소프트웨어 상점에서 Java 웹 앱을 실행하기 위해 Tomcat을 선택하는 이유를 알아 봅니다. Tomcat의 개요와 사용 방법은 물론이 글을 쓰는 현재 최신 버전에 대한 설치 지침을 얻을 수 있습니다.

Tomcat 및 Java Servlet API

Tomcat 9는 Servlet 4.0 사양을 지원하며 JDK 8 이상이 필요합니다. Tomcat 8.5는 HTTP / 2와 같은 몇 가지 새로운 기능을 지원하지만 Servlet 3 컨테이너로 남아 있습니다.

Tomcat은 어떤 종류의 서버입니까?

Java 에코 시스템은 여러 종류의 애플리케이션 서버를 지원하므로이를 명확히하고 Tomcat이 어디에 적합한 지 살펴 보겠습니다.

  • 서블릿 컨테이너는 자바 서블릿을 호스트 주로 사용되는 자바 서블릿 사양의 구현입니다.
  • 웹 서버는 아파치와 같은 로컬 시스템에서 파일을 제공하도록 설계된 서버입니다.
  • 자바 엔터프라이즈 애플리케이션 서버는 자바 EE (지금의 자카르타 EE) 규격의 완전한 구현 한 것입니다.

본질적으로 Tomcat은 서블릿이자 JSP 컨테이너입니다. Java 서블릿은 코드와 비즈니스 로직을 캡슐화하고 Java 서버에서 요청 및 응답을 처리하는 방법을 정의합니다. JSP는 서버 측 뷰 렌더링 기술입니다. 개발자는 서블릿 또는 JSP 페이지를 작성한 다음 Tomcat이 라우팅을 처리하도록합니다.

Tomcat에는 웹 서버 인 Coyote 엔진도 포함되어 있습니다. Coyote 덕분에 JPA (Java Persistence API)를 포함한 다양한 Java 엔터프라이즈 사양 및 기능을 포함하도록 Tomcat을 확장 할 수 있습니다. Tomcat에는 더 많은 엔터프라이즈 기능이 포함 된 TomEE라는 확장 버전도 있습니다. 이 기사의 뒷부분에서 TomEE를 간략하게 소개하겠습니다.

서블릿과 JSP를 호스팅하기 위해 Tomcat을 사용하는 방법부터 살펴 보겠습니다.

Tomcat 다운로드 및 설치

소프트웨어 세계의 오래된 고대이기 때문에 여러 Tomcat 버전을 사용할 수 있습니다. 버전 차이에 대한 정보는 Tomcat 홈페이지에서 확인할 수 있습니다. 일반적으로 안정적인 최신 버전을 선택할 수 있습니다.

우리의 목적을 위해 Tomcat의 최신 버전을 다운로드하십시오. 현재 Tomcat 9입니다. Tomcat을 아카이브 ( .zip또는 tar.gz) 로 다운로드 하거나 설치된 서비스로 다운로드 할 수 있습니다 . 최선의 선택은 당신에게 달려 있습니다. 물론 당신이 Windows에서 실행하고 있지 않다면, 당신은 아카이브로 갈 것입니다. 이 기사에서는 아카이브를 사용할 것입니다.

Tomcat 용 Windows 설치

Windows를 실행 중이고 설치 프로그램을 사용하려면 .exe 파일을 다운로드하여 실행하면됩니다. Tomcat은 적절한 기본값을 사용하여 서비스로 설치됩니다. 그런 다음 설치 위치를 알려주고 여기에서 아카이브의 압축을 푼 것처럼 진행할 수 있습니다.

1 단계. 명령 줄 설치

명령 줄로 이동하여 입력 한 gunzip apache-tomcat-9.0.19.tar.gz다음 tar -xf apache-tomcat-9.0.19.tar. 이렇게하면 다음 디렉터리가 생성됩니다.

  • / bin 에는 Tomcat을 실행하기위한 스크립트가 있습니다.
  • / webapps 는 앱을 배포 할 위치입니다.
  • / logs 는 Tomcat이 로그를 출력하는 곳입니다. Tomcat의 로그 /logs/catalina.out는 기본적으로 저장됩니다. 이 파일을 사용하여 앱별 로그 파일과 함께 문제를 디버깅 할 수 있습니다.
  • / lib 는 Tomcat이 JAR을 찾는 곳입니다. 여기에 JPA와 같이 Tomcat에 포함되지 않은 추가 패키지를 저장할 수 있습니다.
  • / conf 는 Tomcat에 대한 구성 XML이며 Tomcat에 대한 사용자 및 역할 추가와 같은 작업을 수행 할 수 있습니다.

2 단계. Tomcat 시작

Tomcat을 서비스로 설치 한 경우 이미 실행 중입니다. 그렇지 않으면 계속 ./catalina.sh start해서 명령 줄 에 입력하여 시작하십시오 . ( ./catalina.sh사용 가능한 모든 명령을 보려면 인수없이 입력 하십시오). 이제 브라우저에서 Tomcat의 시작 화면을 탐색 할 수 있습니다.

매튜 타이슨

Tomcat에 애플리케이션 배포

Tomcat의 webapps디렉토리는 애플리케이션을 배포하는 곳입니다. .war거기 에 파일을 드롭하면 Tomcat이 실행합니다. WAR 파일은 웹 애플리케이션 리소스의 표준 패키징입니다. 컨테이너 (이 경우 Tomcat)에 실행 방법을 알려주는 추가 파일이있는 JAR 파일입니다.

표준 패키징 외에도 Tomcat에서 콘텐츠를 배포하는 세 가지 추가 방법이 있습니다.

분해 배포

"폭발 된"웹 앱은 WAR 파일로 압축되지 않은 애플리케이션입니다. 즉, 디렉토리와 파일에 배치 된 모든 요소가 여전히 포함되어 있습니다. 압축을 푼 Tomcat 아카이브에는 이러한 방식으로 배포 된 몇 가지 예제가 포함되어 있으며, /webapps/examples디렉토리 에서 찾을 수 있습니다. 확장 배포의 장점은 압축에 대한 걱정없이 파일을 볼 수 있다는 것입니다.

로 이동하면 //localhost:8080/examples/링크 목록이 표시됩니다. 이 페이지는 /webapps/examples/index.html파일 에서 Tomcat에 의해 렌더링됩니다 . Tomcat은 웹 서버 역할을하는 Tomcat의 Coyote 엔진 인스턴스 인 파일 시스템에서 HTML 파일을 제공합니다.

제시된 예제를 자유롭게 탐색 할 수 있으며 서블릿, JSP 및 WebSocket을 제공하는 Tomcat의 기능에 대한 좋은 개요를 제공합니다.

Tomcat에는 기본적으로 /manager경로 아래에있는 관리 앱도 포함되어 있습니다. 무엇보다도이 앱을 사용하면 웹 콘솔에서 앱을 시작, 중지 및 재배포 할 수 있습니다.

정적 콘텐츠 제공

파일 시스템에서 파일을 제공하거나 Tomcat에서 Apache와 같은 다른 HTTP 서버로 전달할 수 있습니다. 또 다른 일반적인 설정은 Apache 또는 Nginx와 같은 파일 서버를 Tomcat 앞에 배치 한 다음 API 요청을 Tomcat으로 전달하는 것입니다. 이 경우 mod_JK 라이브러리는 통신 할 Tomcat 및 Apache (또는 IIS와 같은 다른 웹 서버)를 구성하는 데 사용됩니다.

주로 정적 콘텐츠를 제공 할 때 성능 향상을 위해 Tomcat은 Windows 및 Linux 용 기본 래퍼도 제공합니다. 이를 Tomcat APR이라고 하며 자세한 정보는 여기에서 확인할 수 있습니다. 일반적인 사용 사례에는 필요하지 않지만 알아두면 좋습니다.

임베디드 Tomcat

오랫동안 Jetty는 임베디드 서버로 실행할 수있는 유일한 서버였습니다. 그것은 바뀌었고 이제 Tomcat도 임베디드를 실행할 수 있습니다. 임베디드 서버를 사용하는 아이디어는 지금까지 살펴본 것처럼 애플리케이션 파일이 포함 된 서버 대신에 서버 기능을 호출하는 기본 클래스 (즉, 독립형 Java 앱)가있는 애플리케이션이 있다는 것입니다. 코드베이스 내부. 전반적으로 이것은 더 간단하고 이식 가능한 개발 모델을 제공하며 빠르게 표준이되었습니다. 예를 들어 Spring Boot는 개발 모드에서 실행되는 임베디드 Tomcat 인스턴스를 사용합니다.

임베디드 서버를 실행하면 이제 앱과 서버 배포를 모두 처리하는 대신 단일 구성 요소 (앱) 만 처리하므로 작업 측면에서 단순성을 얻을 수 있습니다. 반면에 Tomcat이 독립 호스트로 실행되는 설정은 여전히 ​​매우 일반적입니다.

TomEE

Tomcat 자체 또는 애플리케이션 종속성에 라이브러리를 추가하여 Tomcat과 함께 표준 Java EE (또는 Jakarta EE) 기능을 더 많이 사용할 수 있습니다. 또 다른 옵션은 TomEE 서버입니다. TomEE는 인기있는 JPA 및 CDI (컨텍스트 및 종속성 주입) API를 포함하여 추가 Java 엔터프라이즈 지원이 포함 된 동일한 Tomcat 엔진입니다. TomEE의 사양은 Java EE 웹 프로필을 기반으로하므로 Tomcat보다 더 많은 것을 제공하지만 WildFly 또는 Glassfish와 같은 완전한 Java EE 앱 서버는 아닙니다.

고 가용성 및 클러스터링

Tomcat은 고 가용성 및 클러스터링을 지원합니다. 고 가용성은 본질적으로 서버의 다른 인스턴스 로 장애 조치 를 수행하고 아무 문제가없는 것처럼 세션을 다시 만드는 기능입니다. 클러스터링은 대용량 트래픽을 처리하기 위해 동일한 서버의 여러 버전을 만드는 기능입니다.

결론

Tomcat은 적극적으로 개발되어 변화에 발 맞춰 웹 앱 배포를위한 견고하고 안정적인 플랫폼을 제공합니다. 많은 PaaS 시스템의 기본 Java 플랫폼으로서의 지속적인 인기와 선택은 지속적인 성공을 증명합니다.

이 이야기는 "Tomcat은 무엇입니까? 원래 Java 서블릿 컨테이너"는 원래 JavaWorld에서 게시했습니다.