Co to jest Tomcat? Oryginalny kontener serwletów Java

Apache Tomcat to długowieczny kontener serwletów Java typu open source, który implementuje kilka podstawowych specyfikacji Java Enterprise, a mianowicie Java Servlet, JavaServer Pages (JSP) i WebSockets API.

Tomcat, projekt Apache Software Foundation, został wydany po raz pierwszy w 1998 roku, zaledwie cztery lata po samej Javie. Tomcat rozpoczął się jako implementacja referencyjna dla pierwszego Java Servlet API i specyfikacji JSP. Chociaż nie jest to już implementacja referencyjna dla żadnej z tych technologii, Tomcat pozostaje najczęściej używanym serwerem Java, szczycąc się dobrze przetestowanym i sprawdzonym silnikiem rdzenia z dobrą rozszerzalnością.

Z tego krótkiego wprowadzenia dowiesz się, dlaczego wiele sklepów z oprogramowaniem wybiera Tomcat do uruchamiania aplikacji internetowych Java. Otrzymasz przegląd Tomcata i sposobu jego użycia, a także instrukcje instalacji najnowszej wersji w chwili pisania tego tekstu.

Tomcat i Java Servlet API

Tomcat 9 obsługuje specyfikację Servlet 4.0 i wymaga JDK 8 lub nowszego. Tomcat 8.5 obsługuje kilka nowszych funkcji, takich jak HTTP / 2, ale pozostaje kontenerem Servlet 3.

Jakim serwerem jest Tomcat?

Ekosystem Java obsługuje kilka rodzajów serwerów aplikacji, więc ich ujednoznacznijmy i zobaczmy, gdzie pasuje Tomcat:

  • Kontener serwletów jest implementacją specyfikacji Java Servlet, wykorzystywane przede wszystkim do organizacji serwletów Java.
  • Serwer WWW jest serwer zaprojektowany do obsługi plików z lokalnego systemu, jak Apache.
  • Serwer aplikacji Java Enterprise jest pełnowymiarową wdrożenie Java EE (obecnie Dżakarta EE) specyfikacji.

W istocie Tomcat to serwlet i kontener JSP. Aplet Java hermetyzuje kod i logikę biznesową oraz definiuje sposób obsługi żądań i odpowiedzi na serwerze Java. JSP to technologia renderowania widoku po stronie serwera. Jako programista piszesz serwlet lub stronę JSP, a następnie pozwalasz Tomcatowi zająć się routingiem.

Tomcat zawiera również silnik Coyote, który jest serwerem WWW. Dzięki Coyote możliwe jest rozszerzenie Tomcata o różnorodne specyfikacje i możliwości Java Enterprise, w tym Java Persistence API (JPA). Tomcat ma również rozszerzoną wersję o nazwie TomEE, która zawiera więcej funkcji dla przedsiębiorstw. W dalszej części tego artykułu pokrótce przedstawię TomEE.

Zacznijmy od przyjrzenia się, jak używać serwera Tomcat do hostowania serwletów i stron JSP.

Pobierz i zainstaluj Tomcat

Będąc odwiecznym starożytnym światem oprogramowania, dostępnych jest wiele wersji Tomcat. Informacje o różnicach wersji są dostępne na stronie głównej Tomcat. Zwykle możesz po prostu wybrać najnowszą stabilną wersję.

Dla naszych celów pobierz najnowszą wersję Tomcata, którą obecnie jest Tomcat 9. Masz do wyboru pobranie Tomcata jako archiwum ( .ziplub tar.gz) lub jako zainstalowaną usługę. Najlepszy wybór należy do Ciebie - chyba że oczywiście nie korzystasz z systemu Windows, w takim przypadku przejdziesz do archiwum. Użyjemy archiwum do tego artykułu.

Instalacja systemu Windows dla Tomcat

Jeśli używasz systemu Windows i chcesz użyć instalatora, po prostu pobierz plik .exe i uruchom go. Tomcat zainstaluje się jako usługa z rozsądnymi domyślnymi ustawieniami. Następnie poinformuje Cię o miejscu instalacji i możesz postępować tak, jakbyś rozpakował tam archiwum.

Krok 1. Instalacja z wiersza poleceń

Przejdź do wiersza poleceń i wpisz, gunzip apache-tomcat-9.0.19.tar.gza po nim tar -xf apache-tomcat-9.0.19.tar. Spowoduje to utworzenie następujących katalogów:

  • / bin zawiera skrypty do wykonywania Tomcat.
  • / webapps to lokalizacja, w której będziesz wdrażać swoje aplikacje.
  • / logs to miejsce, w którym Tomcat wyprowadza swoje dzienniki. Zwróć uwagę, że dzienniki Tomcat /logs/catalina.outsą domyślnie zapisywane. Tego pliku można używać do debugowania problemów w połączeniu z plikami dziennika specyficznymi dla aplikacji.
  • / lib to miejsce, w którym Tomcat szuka plików JAR. Tutaj będziesz przechowywać dodatkowe pakiety, które nie są dołączone do Tomcat, takie jak JPA.
  • / conf to plik XML konfiguracji Tomcat, w którym można na przykład dodawać użytkowników i role dla Tomcat.

Krok 2. Uruchom Tomcat

Jeśli zainstalowałeś Tomcat jako usługę, to już działa. W przeciwnym razie uruchom go, wpisując ./catalina.sh startw wierszu poleceń. (Wpisz ./catalina.shbez argumentów, aby zobaczyć wszystkie dostępne polecenia). Teraz powinieneś być w stanie przejść do ekranu powitalnego Tomcat w przeglądarce.

Matthew Tyson

Wdrażanie aplikacji w Tomcat

webappsKatalog Tomcat to miejsce, w którym wdrażasz aplikację. Możesz tam upuścić .warplik, a Tomcat go uruchomi. Plik WAR to standardowe opakowanie zasobu aplikacji internetowej: plik JAR z kilkoma dodatkowymi plikami informującymi kontener (w tym przypadku Tomcat), jak go uruchomić.

Oprócz standardowego pakowania istnieją trzy dodatkowe sposoby wdrażania zawartości w Tomcat.

Eksplodowane rozmieszczenie

Aplikacja internetowa „eksplodowana” to aplikacja, która nie jest skompresowana do pliku WAR, co oznacza, że ​​nadal zawiera wszystkie elementy rozmieszczone w katalogach i plikach. Archiwum Tomcat, które rozpakowałeś, zawierało kilka przykładów wdrożonych w ten sposób, które znajdziesz w /webapps/exampleskatalogu. Zaletą eksplodowanego wdrożenia jest to, że możesz przeglądać tam pliki bez martwienia się o kompresję.

Jeśli przejdziesz do //localhost:8080/examples/, znajdziesz listę linków. Ta strona jest renderowana przez Tomcat z /webapps/examples/index.htmlpliku. Tomcat obsługuje plik HTML z systemu plików, który jest instancją silnika Coyote firmy Tomcat działającego jako serwer WWW.

Możesz swobodnie przeglądać przedstawione przykłady - dają one dobry przegląd możliwości serwera Tomcat w zakresie obsługi serwletów, stron JSP i WebSockets.

Tomcat domyślnie zawiera również aplikację do zarządzania, którą można znaleźć pod /managerścieżką. Ta aplikacja umożliwia między innymi uruchamianie, zatrzymywanie i ponowne wdrażanie aplikacji z konsoli internetowej.

Dostarczanie treści statycznych

Możliwe jest udostępnianie plików z systemu plików lub przekazywanie ich z Tomcata do innego serwera HTTP, takiego jak Apache. Inną typową konfiguracją jest umieszczenie serwera plików, takiego jak Apache lub Nginx, przed Tomcat, a następnie przekazanie żądań API do Tomcat. W takich przypadkach biblioteka mod_JK jest używana do konfiguracji komunikacji Tomcat i Apache (lub nawet innego serwera internetowego, takiego jak IIS).

Aby zwiększyć wydajność, głównie w zakresie dostarczania zawartości statycznej, Tomcat oferuje również natywne opakowania dla systemów Windows i Linux. Jest to znane jako Tomcat APR i więcej informacji można znaleźć tutaj. Nie są one konieczne w typowych przypadkach użycia, ale warto o nich wiedzieć.

Wbudowany Tomcat

Przez długi czas Jetty był jedynym serwerem, który mógł działać jako serwer wbudowany. To się zmieniło i teraz Tomcat może również działać w wersji osadzonej. Pomysł w korzystaniu z serwera wbudowanego polega na tym, że zamiast serwera zawierającego pliki aplikacji, jak do tej pory widzieliście, mamy aplikację z klasą główną (to jest samodzielną aplikacją Java), która wywołuje możliwości serwera z wewnątrz jego bazy kodu. Ogólnie rzecz biorąc, zapewnia to prostszy i bardziej przenośny model rozwoju i szybko stało się normą. Na przykład Spring Boot wykorzystuje osadzoną instancję Tomcat działającą w trybie deweloperskim.

Uruchamianie wbudowanego serwera może być prostsze pod względem operacji, ponieważ teraz masz do czynienia tylko z pojedynczym komponentem (aplikacją), zamiast zajmować się zarówno aplikacją, jak i wdrożeniem serwera. Z drugiej strony konfiguracja, w której Tomcat działa jako niezależny host, jest nadal bardzo powszechna.

Dla mnie

Możliwe jest użycie większej liczby standardowych funkcji Java EE (lub Jakarta EE) w Tomcat, dodając te biblioteki do samego Tomcat lub do zależności aplikacji. Inną opcją jest serwer TomEE. TomEE to ten sam silnik Tomcat z dodatkową obsługą języka Java dla przedsiębiorstw, w tym z popularnymi interfejsami API JPA i CDI (Contexts and Dependency Injection). Specyfikacja TomEE jest oparta na profilu internetowym Java EE, więc daje więcej niż Tomcat, ale nie jest pełnowartościowym serwerem aplikacji Java EE, takim jak WildFly lub Glassfish.

Wysoka dostępność i klastrowanie

Tomcat obsługuje wysoką dostępność i klastrowanie. Wysoka dostępność to w istocie możliwość przełączenia awaryjnego do innej instancji serwera i ponownego utworzenia sesji, tak jakby nic nie poszło źle. Klastrowanie to możliwość tworzenia wielu wersji tego samego serwera w celu obsługi dużego ruchu.

Wniosek

Tomcat jest aktywnie rozwijany, nadążając za zmianami i dostarczając solidną i niezawodną platformę do wdrażania aplikacji internetowych. Zarówno jego ciągła popularność, jak i wybór jako domyślnej platformy Java dla wielu systemów PaaS świadczą o jego ciągłym sukcesie.

Artykuł „Co to jest Tomcat? Oryginalny kontener serwletów Java” został pierwotnie opublikowany przez JavaWorld.