Apache Tomcat — открытый сервлет-контейнер и HTTP-сервер для Java, разрабатываемый Apache Software Foundation с 1999 года. Реализует спецификации Java EE (Jakarta EE) в части Servlet API, JSP и WebSocket. В отличие от полных Java EE-серверов (WildFly, WebLogic), Tomcat реализует только часть спецификации — без EJB, JMS, CDI.
Как работает
Tomcat принимает HTTP-запросы через встроенный коннектор (HTTP/1.1 или AJP) и передаёт их в соответствующий сервлет. Java-приложения упаковываются в WAR-файлы (Web Application Archive) и деплоируются в директорию webapps/. Tomcat распаковывает WAR, загружает classloader и запускает сервлеты.
Конфигурационные файлы: server.xml (коннекторы, порты, SSL), web.xml (глобальные настройки), context.xml (параметры приложения, пулы соединений с БД).
Типичная конфигурация: Tomcat за обратным прокси Nginx через AJP (порт 8009) или HTTP (порт 8080). Nginx обрабатывает статику и TLS, Tomcat — динамику.
Версии и совместимость
- Tomcat 9.x — Servlet 4.0 / Java EE 8
- Tomcat 10.x — Servlet 5.0 / Jakarta EE 9 (пакеты переименованы с javax.* на jakarta.*)
- Tomcat 11.x — Servlet 6.0 / Jakarta EE 10
История
Tomcat создан Sun Microsystems и передан Apache Software Foundation в 1999 году. Первый релиз 3.0 — 1999 год. Версия 4.0 (2001) ввела Catalina — ядро контейнера. Версия 5.5 (2004) — официальная эталонная реализация Servlet 2.4/JSP 2.0. Версия 10.0 (2021) стала первой с Jakarta EE вместо Java EE.
Связь с хостингом
Для Java-приложений на VDS или выделенном сервере Tomcat — стандартный деплой. Устанавливается через пакетный менеджер (apt install tomcat10) или распаковкой архива. В продакшне рекомендуется запускать за Nginx-прокси и изолировать в контейнере (Docker). Для Kubernetes-деплоя используют официальный Docker-образ tomcat:10-jdk17.
Как работает Tomcat
Apache Tomcat — контейнер сервлетов для Java-приложений, реализующий Jakarta Servlet (ранее Java Servlet) и Jakarta Server Pages (JSP). Tomcat обрабатывает Java-запросы, а статику обычно отдаёт Nginx или Apache HTTP Server через reverse proxy. Типичная схема: Nginx -> Tomcat (порт 8080) через AJP-коннектор или HTTP. Tomcat использует thread pool: каждый запрос обрабатывается в отдельном потоке из пула (по умолчанию 200 потоков). Для высоконагруженных систем переходят на NIO2 или APR-коннектор. JVM под Tomcat нужна свежая: Tomcat 10+ требует Java 11+, Tomcat 11+ -- Java 17+.
История Tomcat
Tomcat создан Sun Microsystems в 1999 году. Передан в Apache Software Foundation в том же году. Tomcat 4.0 (2001) реализовал Servlet 2.3. Tomcat 5.x (2003--2009) долгое время был стандартом. Tomcat 8.5 и 9.0 остаются широко используемыми. Tomcat 10 (2021) перешёл с namespace javax.servlet на jakarta.servlet -- это breaking change для старых приложений. В альтернативных Java-серверах: Jetty, WildFly (JBoss), Payara. Хостинг Java часто строится именно на Tomcat как основном контейнере.
На что обращать внимание
Для хостинга Java-приложений на Tomcat критичен heap size JVM (-Xmx): при недостатке памяти приложение падает с OutOfMemoryError. Мониторинг через JMX или Prometheus JMX Exporter помогает отслеживать heap usage. Убедитесь, что хостер предоставляет VPS с достаточным объёмом RAM: Tomcat с одним Spring Boot приложением потребляет 256--512 МБ; несколько приложений -- 1--2 ГБ. VPS для Java требует минимум 2 ГБ RAM.