Sådan distribueres en WAR-fil til Tomcat

1. Oversigt

Apache Tomcat er en af ​​de mest populære webservere i Java-samfundet. Det sendes som en servletbeholder i stand til at betjene webarkiver med WAR-udvidelsen.

Det giver et management dashboard hvorfra du kan distribuere en ny webapplikation eller ophæve en eksisterende applikation uden at skulle genstarte containeren. Dette er især nyttigt i produktionsmiljøer.

I denne artikel vil vi lave et hurtigt overblik over Tomcat og derefter dække forskellige tilgange til implementering af en WAR-fil.

2. Tomcat-struktur

Inden vi begynder, skal vi gøre os bekendt med nogle terminologi- og miljøvariabler.

2.1. miljøvariabler

Hvis du har arbejdet med Tomcat før, vil disse være meget velkendte for dig:

$ CATALINA_HOME

Denne variabel peger på den mappe, hvor vores server er installeret.

$ CATALINA_BASE

Denne variabel peger på biblioteket for en bestemt forekomst af Tomcat, du kan have flere forekomster installeret. Hvis denne variabel ikke er angivet eksplicit, tildeles den samme værdi som $ CATALINA_HOME.

Webapplikationer distribueres under $ CATALINA_HOME \ webapps vejviser.

2.2. Terminologi

Dokumentrod. Henviser til topkataloget i en webapplikation, hvor alle applikationsressourcerne er placeret som JSP-filer, HTML-sider, Java-klasser og billeder.

Kontekststi. Henviser til det sted, der er relativt til serverens adresse og repræsenterer navnet på webapplikationen.

For eksempel, hvis vores webapplikation er sat under $ CATALINA_HOME \ webapps \ myapp bibliotek, vil den få adgang til URL'en // localhost / myapp, og dens kontekststi vil være / myapp.

KRIG. Er udvidelsen af ​​en fil, der pakker et webapplikationshierarki i ZIP-format og er en forkortelse for Web Archive. Java-webapplikationer pakkes normalt som WAR-filer til implementering. Disse filer kan oprettes på kommandolinjen eller med en IDE som Eclipse.

Efter installation af vores WAR-fil udpakker Tomcat den og gemmer alle projektfiler i webapps katalog i en ny mappe opkaldt efter projektet.

3. Tomcat-opsætning

Tomcat Apache-webserveren er gratis software, der kan downloades fra deres hjemmeside. Det kræves, at der er en JDK tilgængelig på brugerens maskine, og at JAVA_HOME miljøvariabel er indstillet korrekt.

3.1. Start Tomcat

Vi kan starte Tomcat-serveren ved blot at køre start op script placeret på $ CATALINA_HOME \ bin \ opstart. Der er en .flagermus og en .sh i hver installation.

Vælg den relevante indstilling afhængigt af om du bruger et Windows- eller Unix-baseret operativsystem.

3.2. Konfigurer roller

I løbet af installationsfasen har vi nogle muligheder, hvoraf den ene er at bruge Tomcats ledelsesdashboard. For at få adgang til dette dashboard skal vi have en administratorbruger konfigureret med de relevante roller.

For at få adgang til dashboardet har administratorbrugeren brug for manager-gui rolle. Senere bliver vi nødt til at distribuere en WAR-fil ved hjælp af Maven, til dette har vi brug for manager-script rolle også.

Lad os foretage disse ændringer $ CATALINA_HOME \ conf \ tomcat-brugere:

Flere detaljer om de forskellige Tomcat-roller kan findes ved at følge dette officielle link.

3.3. Indstil katalogtilladelser

Endelig skal du sikre dig, at der er læse- / skrivetilladelse i Tomcat-installationsmappen.

3.4. Test installation

For at teste, at Tomcat er konfigureret korrekt, skal du køre start scriptet (startup.bat/opstart.sh), hvis der ikke vises fejl på konsollen, kan vi dobbelttjekke ved at besøge // localhost: 8080.

Hvis du ser Tomcat-destinationssiden, har vi installeret serveren korrekt.

3.5. Løs havnekonflikt

Som standard er Tomcat indstillet til at lytte til forbindelser på port 8080. Hvis der er et andet program, der allerede er bundet til denne port, vil startkonsollen fortælle os.

For at ændre porten kan vi redigere serverkonfigurationsfilen server.xml placeret på $ CATALINA_HOME \ conf \ server.xml. Forbindelseskonfigurationen er som standard som følger:

For eksempel, hvis vi vil ændre vores havn til 8081, så bliver vi nødt til at ændre connectorens portattribut som sådan:

Nogle gange er den valgte port ikke åben som standard, i dette tilfælde skal vi åbne denne port med de relevante kommandoer i Unix-kernen eller oprette de relevante firewallregler i Windows, hvordan dette gøres ligger uden for omfanget af denne artikel.

4. Implementere fra Maven

Hvis vi vil bruge Maven til at implementere vores webarkiver, skal vi konfigurere Tomcat som en server i Mavens settings.xml fil.

Der er to steder, hvor settings.xml filen kan findes:

  • Maven-installationen: $ {maven.home} /conf/settings.xml
  • En brugers installation: $ {user.home} /. m2 / settings.xml

Når du har fundet det, tilføj Tomcat som følger:

 TomcatServer-administratoradgangskode 

Vi bliver nu nødt til at oprette en grundlæggende webapplikation fra Maven for at teste implementeringen. Lad os navigere til, hvor vi gerne vil oprette applikationen.

Kør denne kommando på konsollen for at oprette en ny Java-webapplikation:

mvn arketype: generer -DgroupId = com.baeldung -DartifactId = tomcat-war-deployment -DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false

Dette opretter en komplet webapplikation i biblioteket tomcat-war-implementering som, hvis vi distribuerer nu og får adgang via browseren, udskriver Hej Verden!.

Men inden vi gør det, er vi nødt til at foretage en ændring for at muliggøre Maven-implementering. Så gå over til pom.xml og tilføj dette plugin:

 org.apache.tomcat.maven tomcat7-maven-plugin 2.2 // localhost: 8080 / manager / tekst TomcatServer / myapp 

Bemærk, at vi bruger Tomcat 7-pluginet, fordi det fungerer i begge versioner 7 og 8 uden særlige ændringer.

Konfigurationen url er den url, som vi sender vores implementering til, vil Tomcat vide, hvad de skal gøre med den. Det server element er navnet på den serverforekomst, som Maven genkender. Endelig blev sti element definerer kontekststi af vores implementering.

Dette betyder, at hvis vores implementering lykkes, får vi adgang til webapplikationen ved at trykke // localhost: 8080 / myapp.

Nu kan vi køre følgende kommandoer fra Maven.

Sådan implementeres webappen:

mvn tomcat7: implementer

Sådan frigøres det:

mvn tomcat7: undeploy

Sådan omfordeles efter ændringer:

mvn tomcat7: geninstallere

5. Implementere med Cargo Plugin

Cargo er et alsidigt bibliotek, der giver os mulighed for at manipulere de forskellige typer applikationsbeholdere på en standard måde.

5.1. Opsætning af lastudrulning

I dette afsnit vil vi se på, hvordan man bruger Cargos Maven-plugin til at implementere en WAR til Tomcat, i dette tilfælde vil vi distribuere det til en version 7-forekomst.

For at få et godt greb om hele processen starter vi fra bunden med at oprette en ny Java-webapplikation fra kommandolinjen:

mvn arketype: generer -DgroupId = com.baeldung -DartifactId = fragt-deploy -DarchetypeArtifactId = maven-arketype-webapp -DinteractiveMode = falsk

Dette opretter en komplet Java-webapplikation i fragt-implementering vejviser. Hvis vi bygger, implementerer og indlæser denne applikation som den er, udskrives den Hej Verden! i browseren.

I modsætning til Tomcat7 Maven-pluginet kræver Cargo Maven-pluginet, at denne fil er til stede.

Da vores webapplikation ikke indeholder nogen servlets, er vores web.xml filen vil være meget grundlæggende. Så naviger til WEB-INF mappe i vores nyoprettede projekt, og opret en web.xml fil med følgende indhold:

  cargo-deploy index.jsp 

For at gøre det muligt for Maven at genkende Cargos kommandoer uden at skrive det fuldt kvalificerede navn, skal vi tilføje Cargo Maven-pluginet til en plugin-gruppe i Mavens settings.xml.

Som et nærmeste barn af roden element, tilføj dette:

 org.codehaus.cargo 

5.2. Lokal implementering

I dette underafsnit redigerer vi vores pom.xml der passer til vores nye implementeringskrav.

Tilføj pluginet som følger:

   org.codehaus.cargo cargo-maven2-plugin 1.5.0 tomcat7x installeret Indsæt absolut sti til tomcat 7 installation eksisterende Indsæt absolut sti til tomcat 7 installation 

Den seneste version, i skrivende stund, er 1.5.0. Den nyeste version kan dog altid findes her.

Bemærk, at vi eksplicit definerer emballagen som en WAR, uden dette vil vores build mislykkes. I afsnittet om plugins tilføjer vi derefter ladet maven2-plugin. Derudover vi tilføjer et konfigurationsafsnit, hvor vi fortæller Maven, at vi bruger en Tomcat-container og også en eksisterende installation.

Ved at indstille containertypen til installeret, fortæller vi Maven, at vi har en instans installeret på maskinen, og vi leverer den absolutte URL til denne installation.

Ved at indstille konfigurationstypen til eksisterende, fortæller vi Tomcat, at vi har en eksisterende opsætning, som vi bruger, og at der ikke kræves yderligere konfiguration.

Alternativet ville være at bede fragt om at downloade og konfigurere den angivne version ved at angive en URL. Vores fokus er dog på WAR-implementering.

Det er værd at bemærke, at uanset om vi bruger Maven 2.x eller Maven 3.x, fungerer maven2-pluginnet til begge dele.

Vi kan nu installere vores applikation ved at udføre:

mvn installere

og implementere det ved at gøre:

mvn last: implementere

Hvis alt går godt, skal vi kunne køre vores webapplikation ved at indlæse // localhost: 8080 / last-deploy.

5.3. Fjerninstallation

For at udføre en fjerninstallation er vi kun nødt til at ændre konfigurationsafsnittet for vores pom.xml. Fjerninstallation betyder, at vi ikke har en lokal installation af Tomcat, men har adgang til managerdashboardet på en fjernserver.

Så lad os ændre pom.xml så konfigurationsafsnittet ser sådan ud:

  tomcat8x admin run admin admin // localhost: 8080 / manager / tekst 

Denne gang ændrer vi containertypen fra installeret til fjern og konfigurationstypen fra eksisterende til runtime. Endelig tilføjer vi godkendelse og eksterne URL-egenskaber til konfigurationen.

Sørg for, at roller og brugere allerede er til stede i $ CATALINA_HOME / conf / tomcat-users.xml ligesom før.

Hvis du redigerer det samme projekt til fjern implementering, skal du først fjerne implementeringen af ​​den eksisterende WAR:

mvn last: undeploy

rengør projektet:

mvn ren

installer det:

mvn installere

endelig, implementer det:

mvn last: implementere

Det er det.

6. Implementere fra formørkelse

Eclipse giver os mulighed for at integrere servere for at tilføje implementering af webprojekter i den normale arbejdsgang uden at navigere væk fra IDE.

6.1. Integrer Tomcat i formørkelse

Vi kan integrere en installation i formørkelse ved at vælge vindue menupunkt fra proceslinjen og derefter præferencer fra rullemenuen.

Vi finder et trægitter med præferenceposter i venstre panel i det vindue, der vises. Vi kan derefter navigere til formørkelse -> servere eller skriv bare servere i søgefeltet.

Vi vælger derefter installationsmappen, hvis den ikke allerede er åben for os, og vælger den Tomcat-version, vi downloadede.

På højre side af panelet vises en konfigurationsside, hvor vi vælger Aktiver for at aktivere denne serverversion og gennemse installationsmappen.

Vi anvender ændringer, og næste gang vi åbner servervisningen fra Eclipse's windows -> vis visning undermenu, den nyligt konfigurerede server vil være til stede, og vi kan starte, stoppe og implementere applikationer til den.

6.2. Implementere webapplikation i integreret Tomcat

For at implementere en webapplikation til Tomcat skal den eksistere i vores arbejdsområde.

Åbn servere udsigt fra vindue -> vis visning og kig efter servere. Når det er åbent, kan vi bare højreklikke på den server, vi konfigurerede, og vælge tilføj implementering fra den kontekstmenu, der vises.

Fra Ny implementering dialogboks, der vises, skal du åbne projekt drop down og vælg webprojektet.

Der er en Implementeringstype sektion under Projekt kombinationsboks, når vi vælger Eksploderet arkiv (udviklingstilstand), vores ændringer i applikationen synkroniseres live uden at skulle omplacere, dette er den bedste løsning under udvikling, da den er meget effektiv.

Vælger Pakket arkiv (produktionstilstand) kræver, at vi omplacerer hver gang vi foretager ændringer og ser dem i browseren. Dette er kun bedst til produktion, men Eclipse gør det stadig lige så let.

6.3. Implementere webapplikation på ekstern placering

Vi vælger normalt at implementere en WAR gennem Eclipse for at gøre fejlfinding lettere. Der kan komme et tidspunkt, hvor vi vil have det distribueret til et andet sted end dem, der bruges af Eclipses integrerede servere. Den mest almindelige forekomst er, hvor vores produktionsserver er online, og vi vil opdatere webapplikationen.

Vi kan omgå denne procedure ved at implementere i produktionstilstand og bemærke Implementering af placering i Ny implementering dialogboks og vælge WAR derfra.

I stedet for at vælge en integreret server kan vi vælge under installationen mulighed fra servere se sammen med listen over integrerede servere. Vi navigerer til webapps katalog over en ekstern Tomcat-installation.

7. Implementere fra IntelliJ IDEA

For at implementere en webapplikation til Tomcat skal den eksistere og allerede være downloadet og installeret.

7.1. Lokal konfiguration

Åbn Løb menuen og klik på Rediger konfigurationer muligheder.

I panelet til venstre søger du efter Tomcat Server, hvis det ikke er der, skal du klikke på + -tegnet i menuen, søge efter Tomcat og vælg Lokal. I navnefeltet Tomcat 7/8 (afhængigt af din version).

Klik på Konfigurer ... knap og ind Tomcat Home felt naviger til hjemmets placering for din installation og vælg den.

Du kan eventuelt indstille Start op side at være // localhost: 8080 / og HTTP-port: 8080, skift porten efter behov.

Gå til Implementering fanen og klik på + symbolet, vælg artefakt, du vil føje til serveren, og klik på OK

7.2. Fjernkonfiguration

Følg de samme instruktioner som for lokale Tomcat-konfigurationer, men i serverfanen skal du indtaste installationens fjernplacering.

8. Implementere ved at kopiere arkiv

Vi har set, hvordan man eksporterer en WAR fra Eclipse. En af de ting, vi kan gøre, er at implementere det ved blot at smide det ned i $ CATALINA_HOME \ webapps katalog over enhver Tomcat-forekomst. Hvis forekomsten kører, starter implementeringen med det samme, når Tomcat udpakker arkivet og konfigurerer dets kontekststi.

Hvis forekomsten ikke kører, implementerer serveren projektet næste gang det startes.

9. Implementering fra Tomcat Manager

Forudsat at vi allerede har vores WAR-fil til rådighed og gerne vil distribuere den ved hjælp af management dashboard. Du kan få adgang til managerdashboardet ved at besøge: // localhost: 8080 / manager.

Dashboardet har fem forskellige sektioner: Manager, Ansøgninger, Indsætte, Diagnostikog Serveroplysninger. Hvis du går til Indsætte sektion, finder du to underafsnit.

9.1. Implementere bibliotek eller WAR-fil placeret på serveren

Hvis WAR-filen findes på den server, hvor Tomcat-forekomsten kører, kan vi udfylde det krævede Kontekststi felt forud for et skråstreg fremad “/”.

Lad os sige, at vi gerne vil have adgang til vores webapplikation fra browseren med URL'en // localhost: 8080 / myapp, så vil vores kontekststi felt have / myapp.

Vi springer over XML-konfigurationsfil-URL felt og gå over til WAR eller Directory URL Mark. Her indtaster vi den absolutte URL til Web ARchive-filen, som den vises på vores server. Lad os sige, at vores fils placering er C: /apps/myapp.war, så indtaster vi denne placering. Glem ikke WAR-udvidelsen.

Derefter kan vi klikke indsætte knap. Siden indlæses igen, og vi skal se meddelelsen:

OK - Implementeret applikation på kontekststi / myapp

øverst på siden.

Derudover skal vores ansøgning også vises i Ansøgninger sektion på siden.

9.2. WAR-fil, der skal implementeres

Klik bare på Vælg fil Naviger til placeringen af ​​WAR-filen, vælg den, og klik derefter på indsætte knap.

I begge situationer, hvis alt går godt, vil Tomcat-konsollen informere os om, at implementeringen har været vellykket med en besked som følgende:

INFO: Implementering af webapplikationsarkiv \ sti \ til \ deployeret_krig er afsluttet i 4.833 ms

10. Konklusion

I denne opskrivning fokuserede vi på at implementere en WAR i en Tomcat-server.