Какво е Tomcat? Оригиналният контейнер за сървлети на Java

Apache Tomcat е дългогодишен контейнер за Java сервлети с отворен код, който реализира няколко основни спецификации на Java Java, а именно Java Servlet, JavaServer Pages (JSP) и WebSockets API.

Проект на Apache Software Foundation, Tomcat е издаден за първи път през 1998 г., само четири години след самата Java. Tomcat стартира като референтна реализация за първия Java Servlet API и спецификацията на JSP. Въпреки че вече не е референтната реализация за нито една от тези технологии, Tomcat остава най-широко използваният Java сървър, разполагащ с добре тестван и доказан основен двигател с добра разширяемост.

В това кратко въведение ще научите защо много софтуерни магазини избират Tomcat за стартиране на уеб приложения на Java. Ще получите преглед на Tomcat и как се използва, както и инструкции за инсталиране на най-актуалната версия към момента на писане.

Tomcat и API на Java Servlet

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 е възможно да се разшири Tomcat, за да се включат разнообразни спецификации и възможности за корпоративни Java, включително API за устойчивост на Java (JPA). Tomcat също има разширена версия, наречена TomEE, която включва повече корпоративни функции. Ще представя накратко TomEE по-късно в тази статия.

Нека започнем с поглед върху използването на Tomcat за хостване на сървлети и JSP.

Изтеглете и инсталирайте 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 файл от файловата система, който е екземпляр на двигател Coyote на Tomcat, действащ като уеб сървър.

Можете да разгледате представените примери - те ви дават добър преглед на възможностите на 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 работи като независим хост, все още е много често срещана.

TomEE

Възможно е да използвате повече от стандартните възможности на Java EE (или Jakarta EE) с Tomcat, като добавите тези библиотеки към самия 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.