Hvordan distribuere en WAR-fil til Tomcat

1. Oversikt

Apache Tomcat er en av de mest populære webserverne i Java-fellesskapet. Den sendes som en servletbeholder i stand til å betjene Web ARchives med WAR-utvidelsen.

Det gir et administrasjonspanel hvorfra du kan distribuere en ny webapplikasjon eller distribuere en eksisterende uten å måtte starte beholderen på nytt. Dette er spesielt nyttig i produksjonsmiljøer.

I denne artikkelen vil vi gjøre en rask oversikt over Tomcat og deretter dekke ulike tilnærminger for distribusjon av en WAR-fil.

2. Tomcat-struktur

Før vi begynner, bør vi gjøre oss kjent med noen terminologi og miljøvariabler.

2.1. Miljøvariabler

Hvis du har jobbet med Tomcat før, vil disse være veldig kjent for deg:

$ CATALINA_HOME

Denne variabelen peker på katalogen der serveren vår er installert.

$ CATALINA_BASE

Denne variabelen peker på katalogen til en bestemt forekomst av Tomcat, du kan ha flere forekomster installert. Hvis denne variabelen ikke er angitt eksplisitt, tildeles den samme verdi som $ CATALINA_HOME.

Nettapplikasjoner distribueres under $ CATALINA_HOME \ webapps katalog.

2.2. Terminologi

Dokumentrot. Viser til toppkatalogen til et webapplikasjon, der alle applikasjonsressursene ligger som JSP-filer, HTML-sider, Java-klasser og bilder.

Kontekststi. Henviser til stedet som er relativt til serverens adresse og representerer navnet på webapplikasjonen.

For eksempel hvis webapplikasjonen vår blir satt under $ CATALINA_HOME \ webapps \ myapp katalogen, får du tilgang til den via URL-en // localhost / myapp, og dens kontekststi vil være / myapp.

KRIG. Er utvidelsen av en fil som pakker et hierarki for webapplikasjon i ZIP-format og er en forkortelse for Web Archive. Java-webapplikasjoner er vanligvis pakket som WAR-filer for distribusjon. Disse filene kan opprettes på kommandolinjen eller med en IDE som Eclipse.

Etter distribusjon av WAR-filen pakker Tomcat den ut og lagrer alle prosjektfilene i webapps katalog i en ny katalog oppkalt etter prosjektet.

3. Tomcat-oppsett

Tomcat Apache-webserveren er gratis programvare som kan lastes ned fra deres nettsted. Det kreves at det er en JDK tilgjengelig på brukerens maskin og at JAVA_HOME miljøvariabelen er riktig innstilt.

3.1. Start Tomcat

Vi kan starte Tomcat-serveren ved å bare kjøre oppstart skript lokalisert på $ CATALINA_HOME \ bin \ oppstart. Det er en .flaggermus og en .sh i hver installasjon.

Velg riktig alternativ avhengig av om du bruker et Windows- eller Unix-basert operativsystem.

3.2. Konfigurer roller

I løpet av distribusjonsfasen har vi noen alternativer, hvorav den ene er å bruke Tomcats administrasjonsdashboard. For å få tilgang til dette dashbordet, må vi ha en administratorbruker konfigurert med de aktuelle rollene.

For å få tilgang til dashbordet trenger administratorbrukeren manager-gui rolle. Senere må vi distribuere en WAR-fil ved hjelp av Maven, for dette trenger vi manager-skript rolle også.

La oss gjøre disse endringene $ CATALINA_HOME \ conf \ tomcat-brukere:

Mer informasjon om de forskjellige Tomcat-rollene finner du ved å følge denne offisielle lenken.

3.3. Angi katalogtillatelser

Til slutt må du sørge for at det er lese- / skrivetillatelse i Tomcat-installasjonskatalogen.

3.4. Test installasjon

For å teste at Tomcat er riktig konfigurert, kjør oppstartsskriptet (startup.bat/startup.sh), hvis ingen feil vises på konsollen, kan vi dobbeltsjekke ved å besøke // lokal vert: 8080.

Hvis du ser Tomcat-destinasjonssiden, har vi installert serveren riktig.

3.5. Løs havnekonflikt

Som standard er Tomcat satt til å lytte til tilkoblinger på porten 8080. Hvis det er et annet program som allerede er bundet til denne porten, vil oppstartkonsollen gi oss beskjed.

For å endre porten kan vi redigere serverkonfigurasjonsfilen server.xml ligger ved $ CATALINA_HOME \ conf \ server.xml. Som standard er koblingskonfigurasjonen som følger:

For eksempel hvis vi vil endre havnen til 8081, så må vi endre portens portattributt slik:

Noen ganger er porten vi har valgt ikke åpen som standard, i dette tilfellet må vi åpne denne porten med de aktuelle kommandoene i Unix-kjernen eller opprette de aktuelle brannmurreglene i Windows, hvordan dette gjøres er utenfor omfanget av denne artikkelen.

4. Distribuere fra Maven

Hvis vi vil bruke Maven til å distribuere webarkivene våre, må vi konfigurere Tomcat som en server i Mavens settings.xml fil.

Det er to steder der settings.xml filen kan bli funnet:

  • The Maven installerer: $ {maven.home} /conf/settings.xml
  • En brukers installasjon: $ {user.home} /. m2 / settings.xml

Når du har funnet det, legg til Tomcat som følger:

 TomcatServer-administratorpassord 

Vi må nå lage en grunnleggende webapplikasjon fra Maven for å teste distribusjonen. La oss navigere dit vi vil lage applikasjonen.

Kjør denne kommandoen på konsollen for å opprette en ny Java-webapplikasjon:

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

Dette vil opprette en komplett webapplikasjon i katalogen tomcat-war-deployment som, hvis vi distribuerer nå og får tilgang via nettleseren, skriver ut Hei Verden!.

Men før vi gjør det, må vi gjøre en endring for å aktivere Maven-distribusjon. Så gå over til pom.xml og legg til dette pluginet:

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

Merk at vi bruker Tomcat 7-plugin fordi det fungerer for begge versjoner 7 og 8 uten spesielle endringer.

Konfigurasjonen url er nettadressen vi sender distribusjonen til, vil Tomcat vite hva de skal gjøre med den. De server element er navnet på serverforekomsten som Maven gjenkjenner. Til slutt, sti element definerer kontekststi av distribusjonen vår.

Dette betyr at hvis distribusjonen vår lykkes, får vi tilgang til webapplikasjonen ved å trykke // localhost: 8080 / myapp.

Nå kan vi kjøre følgende kommandoer fra Maven.

Slik distribuerer du nettappen:

mvn tomcat7: distribuere

Slik distribuerer du det:

mvn tomcat7: undeploy

Slik omplasserer du etter endringer:

mvn tomcat7: omplassering

5. Implementere med lasteplugin

Cargo er et allsidig bibliotek som lar oss manipulere de forskjellige typene applikasjonsbeholdere på en standard måte.

5.1. Oppsett av lastedistribusjon

I denne delen vil vi se på hvordan du bruker Cargos Maven-plugin for å distribuere en WAR til Tomcat, i dette tilfellet vil vi distribuere den til en versjon 7-forekomst.

For å få et godt grep om hele prosessen, begynner vi fra bunnen av med å lage en ny Java-webapplikasjon fra kommandolinjen:

mvn arketype: generer -DgroupId = com.baeldung -DartifactId = last-distribusjon -DarchetypeArtifactId = maven-arketype-webapp -DinteractiveMode = false

Dette vil opprette et komplett Java-webapplikasjon i last-distribusjon katalog. Hvis vi bygger, distribuerer og laster inn denne applikasjonen som den er, blir den skrevet ut Hei Verden! i nettleseren.

I motsetning til Tomcat7 Maven-pluginet, krever Cargo Maven-pluginet at denne filen er til stede.

Siden vår webapplikasjon ikke inneholder noen servlets, er vår web.xml filen vil være veldig grunnleggende. Så naviger til WEB-INF mappen til det nyopprettede prosjektet vårt og opprett en web.xml fil med følgende innhold:

  last-deploy index.jsp 

For å gjøre det mulig for Maven å gjenkjenne Cargos kommandoer uten å skrive det fullstendige navnet, må vi legge til Cargo Maven-plugin til en plugin-gruppe i Mavens settings.xml.

Som et nærmeste barn av roten element, legg til dette:

 org.codehaus.cargo 

5.2. Lokal implementering

I dette underavsnittet vil vi redigere pom.xml som passer til våre nye distribusjonskrav.

Legg til pluginet som følger:

   org.codehaus.cargo cargo-maven2-plugin 1.5.0 tomcat7x installert Sett inn absolutt bane til tomcat 7 installasjon eksisterende Sett inn absolutt bane til tomcat 7 installasjon 

Den siste versjonen, i skrivende stund, er 1.5.0. Den siste versjonen finner du imidlertid alltid her.

Legg merke til at vi eksplisitt definerer emballasjen som en WAR, uten dette vil byggingen mislykkes. I plugins-delen legger vi til lasten maven2 plugin. I tillegg vi legger til en konfigurasjonsdel der vi forteller Maven at vi bruker en Tomcat-container og også en eksisterende installasjon.

Ved å sette containertypen til installert, vi forteller Maven at vi har en forekomst installert på maskinen, og vi gir den absolutte URL-en til denne installasjonen.

Ved å sette konfigurasjonstypen til eksisterende, forteller vi Tomcat at vi har et eksisterende oppsett som vi bruker, og ingen ytterligere konfigurasjon er nødvendig.

Alternativet ville være å be lasten laste ned og sette opp den versjonen som er angitt ved å oppgi en URL. Imidlertid er vårt fokus på WAR-distribusjon.

Det er verdt å merke seg at enten vi bruker Maven 2.x eller Maven 3.x, fungerer maven2-plugin for begge deler.

Vi kan nå installere applikasjonen vår ved å utføre:

mvn installere

og distribuere det ved å gjøre:

mvn last: distribuere

Hvis alt går bra, bør vi kunne kjøre webapplikasjonen vår ved å laste den inn // localhost: 8080 / lastedistribusjon.

5.3. Fjerninstallasjon

For å utføre ekstern distribusjon trenger vi bare å endre konfigurasjonsdelen av vår pom.xml. Ekstern distribusjon betyr at vi ikke har en lokal installasjon av Tomcat, men har tilgang til manager dashbordet på en ekstern server.

Så la oss endre pom.xml slik at konfigurasjonsdelen ser slik ut:

  tomcat8x ekstern runtime admin admin // localhost: 8080 / manager / text 

Denne gangen endrer vi containertypen fra installert til fjernkontroll og konfigurasjonstypen fra eksisterende til kjøretid. Til slutt legger vi til autentisering og eksterne URL-egenskaper i konfigurasjonen.

Sørg for at rollene og brukerne allerede er til stede i $ CATALINA_HOME / conf / tomcat-users.xml akkurat som før.

Hvis du redigerer det samme prosjektet for fjernkontroll distribusjon, fjern først distribusjon av eksisterende WAR:

mvn last: undeploy

rengjør prosjektet:

mvn ren

installer den:

mvn installere

til slutt, distribuere den:

mvn last: distribuere

Det er det.

6. Distribuere fra formørkelse

Eclipse lar oss legge inn servere for å legge til webprosjektdistribusjon i normal arbeidsflyt uten å navigere bort fra IDE.

6.1. Bygg Tomcat i formørkelse

Vi kan bygge inn en installasjon i formørkelse ved å velge vindu menyelement fra oppgavelinjen og deretter preferanser fra rullegardinmenyen.

Vi finner et tre gitter av preferanseelementer på venstre panel i vinduet som vises. Vi kan da navigere til formørkelse -> servere eller bare skriv servere i søkefeltet.

Vi velger deretter installasjonskatalogen, hvis den ikke allerede er åpen for oss, og velger Tomcat-versjonen vi lastet ned.

På høyre side av panelet vises en konfigurasjonsside der vi velger alternativet Aktiver for å aktivere denne serverversjonen og bla til installasjonsmappen.

Vi bruker endringer, og neste gang vi åpner servervisning fra Eclipse's windows -> vis visning undermeny, den nylig konfigurerte serveren vil være til stede, og vi kan starte, stoppe og distribuere applikasjoner til den.

6.2. Distribuer webapplikasjon i innebygd Tomcat

For å distribuere et webapplikasjon til Tomcat, må det finnes i vårt arbeidsområde.

Åpne servere utsikt fra vindu -> vis visning og se etter servere. Når den er åpen, kan vi bare høyreklikke på serveren vi konfigurerte og velge legg til distribusjon fra hurtigmenyen som vises.

Fra Ny distribusjon dialogboksen som vises, åpner du prosjekt rullegardinmeny og velg webprosjektet.

Det er en Implementeringstype seksjonen under Prosjekt kombinasjonsboks når vi velger Eksplodert arkiv (utviklingsmodus), endringene i applikasjonen blir synkronisert live uten å måtte omdistribueres, dette er det beste alternativet under utvikling, da det er veldig effektivt.

Velger Pakket arkiv (produksjonsmodus) vil kreve at vi distribuerer hver gang vi gjør endringer og ser dem i nettleseren. Dette er best bare for produksjon, men likevel gjør Eclipse det like enkelt.

6.3. Distribuere webapplikasjon på ekstern plassering

Vi velger vanligvis å distribuere en WAR gjennom Eclipse for å gjøre feilsøking lettere. Det kan komme en tid da vi vil at den skal distribueres til et annet sted enn de som brukes av Eclipses innebygde servere. Den vanligste forekomsten er der produksjonsserveren vår er online, og vi vil oppdatere webapplikasjonen.

Vi kan omgå denne prosedyren ved å distribuere i produksjonsmodus og merke til Distribuere plassering i Ny distribusjon dialogboksen og plukke WAR derfra.

Under distribusjonen, i stedet for å velge en innebygd server, kan vi velge alternativet fra servere visning ved siden av listen over innebygde servere. Vi navigerer til webapps katalog for en ekstern Tomcat-installasjon.

7. Implementere fra IntelliJ IDEA

For å distribuere et webapplikasjon til Tomcat, må det eksistere og allerede ha blitt lastet ned og installert.

7.1. Lokal konfigurasjon

Åpne Løpe menyen og klikk på Rediger konfigurasjoner alternativer.

I panelet til venstre søker du etter Tomcat Server, hvis den ikke er der, klikker du på + -tegnet i menyen, søk etter Tomcat og velg Lokalt. I navnefeltet satt Tomcat 7/8 (avhengig av din versjon).

Klikk på Konfigurer ... knappen og inn Tomcat Home feltet naviger til hjemstedet til installasjonen din og velg den.

Eventuelt kan du stille inn Oppstart side å være // lokal vert: 8080 / og HTTP-port: 8080, endre porten etter behov.

Gå til Utplassering klikk på + -symbolet, velg gjenstand du vil legge til serveren, og klikk OK

7.2. Fjernkonfigurasjon

Følg de samme instruksjonene som for lokale Tomcat-konfigurasjoner, men i serverfanen må du angi det eksterne stedet for installasjonen.

8. Distribuer ved å kopiere arkiv

Vi har sett hvordan vi eksporterer en WAR fra Eclipse. En av tingene vi kan gjøre er å distribuere den ved å bare slippe den i $ CATALINA_HOME \ webapps katalog for en hvilken som helst Tomcat-forekomst. Hvis forekomsten kjører, vil distribusjonen starte umiddelbart når Tomcat pakker ut arkivet og konfigurerer kontekststien.

Hvis forekomsten ikke kjører, vil serveren distribuere prosjektet neste gang det startes.

9. Distribuere fra Tomcat Manager

Forutsatt at vi allerede har WAR-filen vår og ønsker å distribuere den ved hjelp av administrasjonspanelet. Du får tilgang til managerdashboardet ved å gå til: // localhost: 8080 / manager.

Dashbordet har fem forskjellige seksjoner: sjef, applikasjoner, Utplassere, Diagnostikk, og Serverinformasjon. Hvis du går til Utplassere seksjon, finner du to underavsnitt.

9.1. Distribuer katalog eller WAR-fil på serveren

Hvis WAR-filen ligger på serveren der Tomcat-forekomsten kjører, kan vi fylle det nødvendige Kontekstbane feltet foran en skråstrek “/”.

La oss si at vi ønsker at nettapplikasjonen vår skal være tilgjengelig fra nettleseren med URL // localhost: 8080 / myapp, så vil vårt kontekstbanefelt ha / myapp.

Vi hopper over XML-konfigurasjonsfil-URL felt og gå over til WAR eller Directory URL felt. Her skriver vi inn den absolutte URL-en til Web ARchive-filen slik den vises på serveren vår. La oss si at filens plassering er C: /apps/myapp.war, så går vi inn på dette stedet. Ikke glem WAR-utvidelsen.

Etter det kan vi klikke utplassere knapp. Siden vil lastes inn på nytt, og vi bør se meldingen:

OK - Distribuert applikasjon på kontekststi / myapp

øverst på siden.

I tillegg bør søknaden vår vises i applikasjoner delen av siden.

9.2. WAR-fil å distribuere

Bare klikk på Velg Fil , naviger til plasseringen av WAR-filen og velg den, og klikk deretter på utplassere knapp.

I begge situasjoner, hvis alt går bra, vil Tomcat-konsollen informere oss om at distribusjonen har vært vellykket med en melding som følgende:

INFO: Distribusjon av webapplikasjonsarkiv \ path \ to \ deployed_war er ferdig på 4.833 ms

10. Konklusjon

I denne oppskriften fokuserte vi på å distribuere en WAR i en Tomcat-server.