Vad är Tomcat? Den ursprungliga Java-servletbehållaren

Apache Tomcat är en långlivad, öppen källkod Java servlet behållare som implementerar flera grundläggande Java-företagsspecifikationer, nämligen Java Servlet, JavaServer Pages (JSP) och WebSockets API.

Ett Apache Software Foundation-projekt, Tomcat släpptes först 1998, bara fyra år efter Java själv. Tomcat startade som en referensimplementering för det första Java Servlet API och JSP-specifikationen. Även om det inte längre är referensimplementeringen för någon av dessa tekniker, är Tomcat fortfarande den mest använda Java-servern, med en väl testad och beprövad kärnmotor med god töjbarhet.

I den här korta introduktionen lär du dig varför många programvaruaffärer väljer Tomcat för att köra Java-webbappar. Du får en översikt över Tomcat och hur den används, samt installationsinstruktioner för den senaste versionen i skrivande stund.

Tomcat och Java Servlet API

Tomcat 9 stöder Servlet 4.0-specifikationen och kräver JDK 8 eller högre. Tomcat 8.5 stöder flera nyare funktioner som HTTP / 2, men förblir en Servlet 3-behållare.

Vilken typ av server är Tomcat?

Java-ekosystemet stöder flera typer av applikationsserver, så låt oss skilja dem och se var Tomcat passar in:

  • En servlet-behållare är en implementering av Java Servlet-specifikationen, som främst används för att vara värd för Java-servlets.
  • En webbserver är en server som är utformad för att servera filer från det lokala systemet, som Apache.
  • En Java-applikationsserver för företag är en fullständig implementering av Java EE (nu Jakarta EE) -specifikationen.

Tomcat är en servlet och en JSP-container. En Java-servlet inkapslar kod och affärslogik och definierar hur förfrågningar och svar ska hanteras på en Java-server. JSP är en renderingsteknik på serversidan. Som utvecklare skriver du servlet eller JSP-sidan och låter sedan Tomcat hantera routningen.

Tomcat innehåller också Coyote-motorn, som är en webbserver. Tack vare Coyote är det möjligt att utöka Tomcat till att omfatta en mängd olika Java-företagsspecifikationer och -funktioner, inklusive Java Persistence API (JPA). Tomcat har också en utökad version, kallad TomEE, som innehåller fler företagsfunktioner. Jag presenterar TomEE kort senare i den här artikeln.

Låt oss börja med en titt på att använda Tomcat för att vara värd för servlets och JSP.

Ladda ner och installera Tomcat

Eftersom det är en antik från programvaruvärlden finns ett antal Tomcat-versioner tillgängliga. Information om versionskillnader finns på Tomcats hemsida. Du kan vanligtvis bara välja den senaste stabila versionen.

Ladda ner den senaste versionen av Tomcat, som för närvarande är Tomcat 9. För våra ändamål. Du kan välja att ladda ner Tomcat som ett arkiv ( .zipeller tar.gz) eller som en installerad tjänst. Det bästa valet är upp till dig - om du naturligtvis inte kör på Windows, i vilket fall ska du gå till arkivet. Vi använder arkivet för den här artikeln.

Windows-installation för Tomcat

Om du kör Windows och vill använda installationsprogrammet laddar du bara ner .exe-filen och kör den. Tomcat installerar sig själv som en tjänst med rimliga standardvärden. Det kommer då att informera dig om var installationen är och du kan fortsätta som om du har packat upp arkivet där.

Steg 1. Kommandoradsinstallation

Gå till kommandoraden och skriv gunzip apache-tomcat-9.0.19.tar.gzföljt av tar -xf apache-tomcat-9.0.19.tar. Detta skapar följande kataloger:

  • / bin innehåller skript för körning av Tomcat.
  • / webapps är platsen där du kommer att distribuera dina appar.
  • / logs är där Tomcat matar ut sina loggar. Observera att Tomcats loggar går in som /logs/catalina.outstandard. Du kan använda den här filen för att felsöka problem i kombination med appspecifika loggfiler.
  • / lib är där Tomcat letar efter JAR. Det är här du lagrar ytterligare paket som inte ingår i Tomcat, till exempel JPA.
  • / conf är konfigurations-XML för Tomcat, där du kan göra saker som att lägga till användare och roller för Tomcat.

Steg 2. Starta Tomcat

Om du installerade Tomcat som en tjänst körs den redan. Annars, fortsätt och starta det genom att gå in ./catalina.sh startpå kommandoraden. (Skriv ./catalina.shutan argument för att se alla tillgängliga kommandon). Nu ska du kunna bläddra till Tomcats välkomstskärm i en webbläsare.

Matthew Tyson

Distribuera applikationer i Tomcat

Tomcats webappskatalog är där du distribuerar en applikation. Du kan släppa en .warfil där och Tomcat kör den. En WAR-fil är standardförpackningen för en webbapplikationsresurs: en JAR-fil med några ytterligare filer som berättar för behållaren (i detta fall Tomcat) hur den ska köras.

Förutom standardförpackningen finns det ytterligare tre sätt att distribuera innehåll i Tomcat.

Exploderad distribution

En "exploderad" webbapp är en applikation som inte komprimeras till en WAR-fil, vilket innebär att den fortfarande innehåller alla element som anges i kataloger och filer. Tomcat-arkivet du packade upp levererade med flera exempel som distribuerats på detta sätt, som du hittar i /webapps/exampleskatalogen. Fördelen med en exploderad distribution är att du kan titta på filerna där utan att oroa dig för komprimering.

Om du navigerar till //localhost:8080/examples/hittar du en lista med länkar. Denna sida återges av Tomcat från /webapps/examples/index.htmlfilen. Tomcat serverar en HTML-fil från filsystemet, som är en förekomst av Tomcats Coyote-motor som fungerar som en webbserver.

Du är fri att utforska de presenterade exemplen - de ger dig en bra översikt över Tomcats möjligheter för servering av servlets, JSP och WebSockets.

Tomcat innehåller också en hanteringsapp som standard, som finns under /managersökvägen. Den här appen låter dig bland annat starta, stoppa och distribuera appar från en webbkonsol.

Visar statiskt innehåll

Det är möjligt att betjäna filer från filsystemet eller vidarebefordra från Tomcat till en annan HTTP-server som Apache. En annan vanlig installation är att placera en filserver som Apache eller Nginx framför Tomcat och sedan vidarebefordra dina API-förfrågningar till Tomcat. I dessa fall används mod_JK-biblioteket för att konfigurera Tomcat och Apache (eller till och med en annan webbserver som IIS) för att kommunicera.

För förbättrad prestanda, främst när det gäller att leverera statiskt innehåll, erbjuder Tomcat även inbyggda omslag för Windows och Linux. Detta kallas Tomcat APR och mer information finns här. Dessa är inte nödvändiga för typiska användningsfall, men bra att veta om.

Inbäddad Tomcat

Under lång tid var Jetty den enda servern som kunde köras som en inbäddad server. Det har förändrats och nu kan Tomcat också köras inbäddat. Tanken med att använda en inbäddad server är att i stället för servern som innehåller applikationsfilerna, som du hittills har sett, har du en applikation med en huvudklass (det vill säga en fristående Java-app), som åberopar serverfunktionerna från inuti dess kodbas. Sammantaget erbjuder detta en enklare och bärbar utvecklingsmodell och har snabbt blivit normen. Spring Boot, till exempel, använder en inbäddad Tomcat-instans som körs i dev-läge.

Att köra en inbäddad server kan vara enkel när det gäller operationer, eftersom du nu har att göra med bara en enda komponent (appen) istället för att hantera både appen och en serverdistribution. Å andra sidan är installationen där Tomcat kör som en oberoende värd fortfarande mycket vanlig.

TomEE

Det är möjligt att använda fler av de vanliga Java EE (eller Jakarta EE) -funktionerna med Tomcat genom att lägga till dessa bibliotek till Tomcat själv eller till dina applikationsberoende. Ett annat alternativ är TomEE-servern. TomEE är samma Tomcat-motor med ytterligare Java-företagsstöd, inklusive de populära JPA- och CDI-API: erna (Contexts and Dependency Injection). TomEE: s specifikation är baserad på Java EE-webbprofilen, så det ger dig mer än Tomcat men är inte en fullblåst Java EE-appserver som WildFly eller Glassfish.

Hög tillgänglighet och klustring

Tomcat stöder hög tillgänglighet och klustring. Hög tillgänglighet är i huvudsak möjligheten att misslyckas med en annan instans av servern och återskapa sessionen som om ingenting hade gått fel. Clustering är möjligheten att skapa flera versioner av samma server för att hantera högvolymtrafik.

Slutsats

Tomcat förblir aktivt utvecklad, håller jämna steg med förändringar och levererar en solid och pålitlig plattform för distribution av webbappar. Både dess fortsatta popularitet och val som standard Java-plattform för många PaaS-system vittnar om dess pågående framgång.

Denna berättelse, "Vad är Tomcat? Den ursprungliga Java-servletcontainern" publicerades ursprungligen av JavaWorld.