Что такое Tomcat? Исходный контейнер сервлетов Java

Apache Tomcat - это долговечный контейнер Java-сервлетов с открытым исходным кодом, который реализует несколько основных корпоративных спецификаций Java, а именно Java Servlet, JavaServer Pages (JSP) и API WebSockets.

Tomcat, проект Apache Software Foundation, был впервые выпущен в 1998 году, всего через четыре года после появления самой Java. Tomcat начинался как эталонная реализация первого Java Servlet API и спецификации JSP. Хотя Tomcat больше не является эталонной реализацией ни для одной из этих технологий, он остается наиболее широко используемым сервером Java, имеющим хорошо протестированный и проверенный основной механизм с хорошей расширяемостью.

Из этого краткого введения вы узнаете, почему многие магазины программного обеспечения выбирают Tomcat для запуска веб-приложений Java. Вы получите обзор Tomcat и его использование, а также инструкции по установке самой последней версии на момент написания этой статьи.

Tomcat и API сервлетов Java

Tomcat 9 поддерживает спецификацию Servlet 4.0 и требует JDK 8 или выше. Tomcat 8.5 поддерживает несколько новых функций, таких как HTTP / 2, но остается контейнером Servlet 3.

Что за сервер Tomcat?

Экосистема Java поддерживает несколько типов серверов приложений, поэтому давайте устраним их неоднозначность и посмотрим, где Tomcat подходит:

  • Контейнер сервлетов является реализация спецификации Java Servlet, используется в основном для размещения Java - сервлеты.
  • Веб - сервер представляет собой сервер предназначен для обслуживания файлов из локальной системы, как Apache.
  • Сервер приложений Java предприятий является полномасштабной реализацией Java EE (ныне Джакарта EE) спецификация.

По сути, Tomcat - это сервлет и контейнер JSP. Сервлет Java инкапсулирует код и бизнес-логику и определяет, как запросы и ответы должны обрабатываться на сервере Java. JSP - это технология рендеринга представления на стороне сервера. Как разработчик вы пишете сервлет или страницу JSP, а затем позволяете Tomcat обрабатывать маршрутизацию.

Tomcat также содержит движок Coyote, который представляет собой веб-сервер. Благодаря Coyote можно расширить Tomcat, включив в него множество корпоративных спецификаций и возможностей Java, включая Java Persistence API (JPA). Tomcat также имеет расширенную версию, называемую TomEE, которая включает больше корпоративных функций. Я кратко представлю TomEE позже в этой статье.

Начнем с использования Tomcat для размещения сервлетов и JSP.

Скачайте и установите Tomcat

Tomcat - это седой древний мир программного обеспечения, поэтому доступно несколько версий Tomcat. Информация о различиях версий доступна на домашней странице Tomcat. Обычно вы можете просто выбрать последнюю стабильную версию.

Для наших целей загрузите последнюю версию Tomcat, которая в настоящее время называется Tomcat 9. У вас есть выбор: загрузить Tomcat в виде архива ( .zipили tar.gz) или как установленную службу. Наилучший выбор остается за вами - если, конечно, вы не работаете в Windows, и в этом случае вы воспользуетесь архивом. Для статьи воспользуемся архивом.

Установка Windows для Tomcat

Если вы работаете в 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-файлы. Здесь вы будете хранить дополнительные пакеты, не включенные в Tomcat, например JPA.
  • / conf - это XML-файл конфигурации для Tomcat, в котором вы можете делать такие вещи, как добавление пользователей и ролей для Tomcat.

Шаг 2. Запустите Tomcat

Если вы установили Tomcat как службу, он уже работает. В противном случае запустите его, введя ./catalina.sh startв командной строке. (Введите ./catalina.shбез аргументов, чтобы увидеть все доступные команды). Теперь у вас должна быть возможность перейти на экран приветствия Tomcat в браузере.

Мэтью Тайсон

Развертывание приложений в Tomcat

webappsКаталог Tomcat - это место, где вы развертываете приложение. Вы можете перетащить туда .warфайл, и Tomcat запустит его. Файл WAR - это стандартная упаковка для ресурса веб-приложения: файл JAR с некоторыми дополнительными файлами, сообщающими контейнеру (в данном случае Tomcat), как его запускать.

Помимо стандартной упаковки, есть три дополнительных способа развертывания контента в Tomcat.

Развернутое развертывание

«Развернутое» веб-приложение - это приложение, которое не сжато в файл WAR, то есть оно по-прежнему содержит все элементы, расположенные в каталогах и файлах. Распакованный вами архив Tomcat поставляется с несколькими развернутыми таким образом примерами, которые вы найдете в /webapps/examplesкаталоге. Преимущество развернутого развертывания заключается в том, что вы можете просматривать файлы, не беспокоясь о сжатии.

Если вы перейдете к //localhost:8080/examples/, вы найдете список ссылок. Эта страница отображается Tomcat из /webapps/examples/index.htmlфайла. Tomcat обслуживает HTML-файл из файловой системы, которая является экземпляром движка Tomcat Coyote, выступающего в качестве веб-сервера.

Вы можете свободно изучить представленные примеры - они дают вам хороший обзор возможностей Tomcat для обслуживания сервлетов, JSP и WebSockets.

Tomcat также по умолчанию включает приложение управления, которое находится по /managerпути. Помимо прочего, это приложение позволяет запускать, останавливать и повторно развертывать приложения с веб-консоли.

Обслуживание статического контента

Можно обслуживать файлы из файловой системы или пересылать из Tomcat на другой HTTP-сервер, например Apache. Еще одна распространенная установка - поместить файловый сервер, например Apache или Nginx, перед Tomcat, а затем перенаправить ваши запросы API в Tomcat. В этих случаях библиотека mod_JK используется для настройки Tomcat и Apache (или даже другого веб-сервера, такого как IIS) для связи.

Для повышения производительности, в первую очередь при доставке статического контента, Tomcat также предлагает собственные оболочки для Windows и Linux. Это известно как Tomcat APR, и дополнительная информация доступна здесь. Это не обязательно для типичных случаев использования, но о них полезно знать.

Встроенный Tomcat

Долгое время Jetty был единственным сервером, способным работать как встроенный сервер. Это изменилось, и теперь Tomcat также может работать встраиваемым образом. Идея использования встроенного сервера заключается в том, что вместо сервера, содержащего файлы приложения, как вы уже видели, у вас есть приложение с основным классом (то есть автономное приложение Java), которое вызывает возможности сервера из внутри его кодовой базы. В целом, это предлагает более простую и портативную модель разработки, которая быстро стала нормой. Spring Boot, например, использует встроенный экземпляр Tomcat, работающий в режиме разработки.

Запуск встроенного сервера может упростить работу, поскольку теперь вы имеете дело только с одним компонентом (приложением), а не одновременно с приложением и развертыванием сервера. С другой стороны, установка, в которой Tomcat работает как независимый хост, по-прежнему очень распространена.

Мне

С Tomcat можно использовать больше стандартных возможностей Java EE (или Jakarta EE), добавив эти библиотеки в сам Tomcat или в зависимости вашего приложения. Другой вариант - сервер TomEE. TomEE - это тот же механизм Tomcat с дополнительной корпоративной поддержкой Java, включая популярные API-интерфейсы JPA и CDI (Contexts and Dependency Injection). Спецификация TomEE основана на веб-профиле Java EE, поэтому она дает вам больше, чем Tomcat, но не является полноценным сервером приложений Java EE, таким как WildFly или Glassfish.

Высокая доступность и кластеризация

Tomcat поддерживает высокую доступность и кластеризацию. Высокая доступность - это, по сути, возможность переключения на другой экземпляр сервера и воссоздания сеанса, как если бы ничего не случилось. Кластеризация - это возможность создавать несколько версий одного и того же сервера для обработки большого объема трафика.

Заключение

Tomcat продолжает активно развиваться, идет в ногу с изменениями и предоставляет прочную и надежную платформу для развертывания веб-приложений. Его неизменная популярность и выбор в качестве платформы Java по умолчанию для многих систем PaaS свидетельствуют о ее постоянном успехе.

Этот рассказ «Что такое Tomcat? Оригинальный контейнер сервлетов Java» был первоначально опубликован JavaWorld.