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.