Implementering af webapplikationer i anløbsbroen

1. Oversigt

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

Jetty er en open source Java HTTP-webserver og en servletcontainer. Anløbsbro bruges mere almindeligt i maskine til maskinkommunikation i Java-økosystemet.

2. Opsætning af projekt

Den seneste version af Jetty kan altid downloades ved at følge dette link. Vi opretter en meget grundlæggende Java-webapplikation fra kommandolinjen med Maven, som vi vil bruge til vores eksempler.

I denne artikel bruger vi Jetty 9.x, den seneste version i øjeblikket.

Lad os gå over til vores konsol, navigere til vores valgte placering og køre følgende kommando:

mvn arketype: generer -DgroupId = com.baeldung -DartifactId = jetty-app -DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false

Denne kommando opretter en komplet Java-webapp inde i en ny anløbs-app mappe i vores aktuelle placering. Det er kun en af ​​mange måder at oprette en Java-applikation med Maven på, og det passer til vores formål.

Da vi skal beskæftige os med WAR-filer, lad os navigere til projektets rod og bygge den:

cd anløbs-app

Bygning med Maven:

mvn-pakke

Derefter mole-app.war oprettes på stedet jetty-app / target / jetty-app.war.

3. Anløbsbrostruktur

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 $ JETTY_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. WAR-filer kan oprettes på kommandolinjen eller med en IDE som Eclipse.

4. Implementering ved kopiering af WAR

Den nemmeste måde at implementere en webapplikation på Jetty-serveren er sandsynligvis ved at kopiere WAR-filen til $ JETTY_HOME / webapps vejviser.

Efter kopiering kan vi starte serveren ved at navigere til $ JETTY_HOME og kører kommandoen:

java -jar start.jar

Anløbsbro scanner dens $ JETTY_HOME / webapps bibliotek ved opstart, hvor webapplikationer kan implementeres. Vores nye app vil blive implementeret kl / anløbs-app sammenhæng.

Når vi indlæser URL'en // localhost: 8080 / jetty-app fra browseren skal vi se, at vores app kører med Hej Verden! udskrevet på skærmen.

5. Implementering ved hjælp af kontekstfil

Jetty webserver tilbyder os en måde at implementere et webarkiv placeret hvor som helst i filsystemet ved, at vi opretter en kontekstfil til det.

På denne måde, selvom vores WAR-fil er placeret på et skrivebord, eller hvis vi har valgt at holde den inde anløbs-app / mål hvor Maven placerer pakken, kan vi bare oprette dens kontekstfil inde $ JETTY_HOME / webapps.

Lad os omplacere anløbsbro-app.war vi har lige indsat ved at slette det fra webapps. Vi opretter derefter jetty-app.xml med følgende kode og placer den inde webapps:

   / mole absolut / sti / til / jetty-app.war 

Denne kontekstfil skal have samme navn som vores WAR, med XML-filtypenavn. Bemærk, at vi har indstillet kontekststi attribut til /anløbsbro. Dette betyder, at vi får adgang til vores webapp fra URL'en // localhost: 8080 / anløbsbro.

Denne evne til at tilpasse kontekststien er en af ​​de store fordele ved kontekstfiltilgangen ved at implementere WAR'er i anløbsbro, da nogle appnavne måske ikke er praktisk til dette formål.

6. Implementering med Jetty Maven Plugin

6.1. Standardinstallation

Anløbsbroen Maven plugin hjælper os med at udføre hurtig test og iteration, mens vi bygger Java-webapplikationer. For at være i stand til at implementere og køre applikationer med det behøver vi kun tilføje plugin pom.xml:

 org.eclipse.jetty jetty-maven-plugin 9.3.11.v20160721 

Den seneste version kan findes ved at følge dette Maven-link.

Vi er nødt til at sørge for, at vores instans af anløbsbro kører i havn 8080 stoppes, før vi udfører det næste trin.

For at implementere vores app efter tilføjelse af pluginet navigerer vi til roden hvor pom.xml er placeret og kører følgende kommando:

mvn anløbsbro: kør

Denne kommando opretter en ny anløbsinstans, og pluginnet distribuerer appen til den. Vi kan få adgang til det ved at indlæse det // localhost: 8080.

Anløbsbroen Maven-plugin scanner kontinuerligt webprojektet for eventuelle ændringer og fortsætter med at ominstallere det.

6.2. Ændring af Kontekststi

Fra det forrige underafsnit blev appen implementeret under / sammenhæng. Men hvis vi gerne vil implementere under en given kontekststi som f.eks /anløbsbro Som før bliver vi nødt til at konfigurere pluginet forskelligt.

Vi ændrer vores plugindeklaration til følgende XML:

 org.eclipse.jetty jetty-maven-plugin 9.3.11.v20160721 / anløbsbro 

Bemærk hvordan vi har tilføjet en konfigurationsblok for yderligere at tilpasse vores implementering. Der findes flere konfigurationsmuligheder, der skal placeres inde i denne blok, afhængigt af hvad man ønsker.

Efter disse ændringer kan vi køre pluginet igen som før og få adgang til vores app igennem // localhost: 8080 / anløbsbro.

6.3. Ændring af havn

Et scenarie, man kan møde, er en undtagelse for port i brug. Måske har vi en anløbsbro, der kører i havn 8080 til produktion, men vi er stadig i udviklingsfase og vil drage fordel af den lette iteration, der følger med implementering ved hjælp af Maven-pluginet.

I sådanne tilfælde skal vi køre vores testserver på en anden port. Lad os ændre plugin-konfigurationen til følgende XML:

  / anløbsbro 8888 

Når vi genkører vores Maven-plugin, kan vi få adgang til vores app fra // localhost: 8888 / anløbsbro.

Det er værd at bemærke, at med Maven-plugin'et behøver vi ikke at have en instans af anløbsbro installeret og kører. Det opretter snarere sin egen anløbsbro.

7. Implementering med Jetty Runner

Ligesom anløbsbro Maven-plugin tilbyder jetty-runner en hurtig og nem måde at implementere og køre vores webapp på. Med jetty-runner behøver vi heller ikke at installere og køre en separat forekomst af en anløbsserver.

7.1. Opsætning af Jetty Runner

For at bruge jetty-runner til hurtig implementering og kørsel af vores webapps kan vi downloade den nyeste version ved at følge dette Maven-link.

Med jetty-runner behøver vi kun at placere den downloadede krukke hvor som helst vi vil og være klar med filsystemstien til vores webarkiver.

Vi kan sende konfigurationsparametre fra kommandolinjen samt distribuere mange applikationer i forskellige sammenhænge og bundet til forskellige porte med kun en kommando.

Jeg har placeret min anløbsbro i det samme hierarki som anløbs-app vejviser. Det er den mappe, der indeholder vores webapplikation.

7.2. Grundlæggende implementering

Lad os implementere vores WAR ved hjælp af jetty-runner:

java -jar jetty-runner-9.4.0.M1.jar jetty-app / target / jetty-app.war

Denne kommando opretter, ligesom tilfældet med Maven-plugin'et, en anløbsbroinstans og distribuerer den medfølgende krig til den. WAR-stien kan være en absolut eller en relativ sti.

Vi kan indlæse denne applikation ved hjælp af // localhost: 8080.

7.3. Implementere med kontekststi

At implementere under /anløbsbro sammenhæng som før:

java -jar jetty-runner-9.4.0.M1.jar --sti / anløbsbro-app / target / jetty-app.war

Tilgængelig via // localhost: 8080 / anløbsbro.

7.4. Implementere på givet havn

Sådan implementeres på et givet portnummer:

java -jar jetty-runner-9.4.0.M1.jar --port 9090 jetty-app / target / jetty-app.war

Tilgængelig via // localhost: 9090.

7.5. Implementere flere kriger

For at implementere flere WAR'er med den samme kommando bruger vi -sti argument for at gøre hver unik:

java -jar jetty-runner - sti / en one.war - sti / to two.war

Vi ville derefter få adgang one.war via // localhost: 8080 / en og to.krig via // localhost: 8080 / to.

8. Implementer med Cargo Maven Plugin

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

8.1. Opsætning af lastudrulning

I dette afsnit vil vi se på, hvordan man gør det brug Cargos Maven-plugin til at implementere en WAR til anløbsbroen, i dette tilfælde vil vi installere en WAR til en Jetty 9.x-instans.

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.

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 hvis det endnu ikke blev oprettet automatisk med følgende indhold:

  cargo-deploy index.jsp 

For at gøre det muligt for Maven at genkende fragtkommandoer uden at skrive det fuldt kvalificerede navn, skal vi tilføje fragt-Maven-plugin'et i en plugin-gruppe i Mavens settings.xml.

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

 org.codehaus.cargo 

8.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 jetty9x installeret Indsæt absolut sti til anløbsbro 9 installation eksisterende Indsæt absolut sti til anløbsbro 9 installation 

Bemærk, at vi udtrykkeligt definere emballagen som en WARuden dette vil vores build mislykkes. I afsnittet om plugins tilføjer vi derefter ladet maven2-plugin.

Den seneste version i skrivende stund er 1.5.0. Den nyeste version kan dog altid findes her. Derudover tilføjer vi et konfigurationsafsnit, hvor vi fortæller Maven, at vi bruger Jetty-container og også en eksisterende Jetty-installation.

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

Ved at indstille konfigurationstypen til eksisterende, fortæller vi Maven, 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 opsætte den Jetty-version, der er angivet 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 implementer det ved at køre:

mvn last: implementere

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

Hvis vi tjekker $ JETTY_HOME / webapps mappe, finder vi en installationsbeskrivelsesfil eller hvad vi tidligere kaldte kontekstfil kaldet last-deploy.xml skabt af fragt.

8.3. Fjerninstallation

Som standard har Jetty ikke muligheder for fjerninstallation. For at tilføje en sådan støtte til anløbsbro bruger Cargo Fjernbetjening af anløbsbro Webapplikation.

Hvad dette betyder er, at vi skal downloade en webapplikation WAR, der er oprettet af Cargo-udviklerne, distribuere denne WAR til målbådecontaineren.

Hver gang vi ønsker at distribuere til denne eksterne server ved hjælp af Maven-plugin, sender den en HTTP-anmodning til distribueringsapplikationen på fjernserveren med vores WAR til implementering.

Denne fjerninstallator kan findes her. Gå over til værktøjer sektion og download last-anløbsbro-7-og-fremad-deployer KRIG.

Sikkerhedshensyn

Vi skal oprette en sikkerhed rige i anløbsbro, før dette kan fungere til autentificeringsformål. Opret en fil, der hedder realm. ejendomme i $ JETTY_HOME / osv mappe på den eksterne anløbsserver. Filindholdet er:

admin: adgangskode, manager

Det admin er det brugernavn, hvormed klienten kan få adgang til de sikrede apps, adgangskode er adgangskoden og Manager er den rolle, klienterne skal have, før de får adgang.

Vi skal også erklære vores sikkerhedskrav i implementeringsprogrammet. Vi udpakker den KRIG, vi downloadede, fra siden med downloads af anløbsbroen, foretager nogle ændringer og pakker den tilbage i en KRIG.

Efter udpakningen skal du gå over til WEB-INF / web.xml og fjerne kommentar til XML-koden med Ukommentar for at aktivere sikkerhed kommentar. Eller placer følgende kode der:

  Jetty Remote Deployer / * manager BASIC Test Realm 

Implementering af installationsprogrammet

Vi kan nu pakke appen tilbage i en WAR og kopiere den til ethvert sted på fjernserveren. Vi distribuerer det derefter til anløbsbroen.

Under implementeringen er det bedst at bruge en implementeringsbeskrivelsesfil så vi kan skabe et sikkerhedHåndterer og videregive til det a loginService. Alle sikrede applikationer skal have en login-tjeneste, ellers kan anløbsbroen ikke implementere dem.

Lad os nu oprette en kontekstfil i $ JETTY_HOME / webapps i den eksterne anløbsinstans skal du huske reglerne for navngivning af kontekstfilen. Gør det samme navn som WAR:

   / deployer absolut / sti / til / cargo-jetty-deployer.war Test Realm /etc/realm.properties 

Start den eksterne anløbsbroserver, og hvis alt går godt, skal vi kunne indlæse // localhost: 8080 / fragt-anløbsbro. Vi skulle så kunne se noget som:

HTTP FEJL 400 Problemadgang / fragt-anløbsbro /. Årsag: Kommando / er ukendt

Implementering af WAR til fjernbryggen

For at udføre en fjerninstallation behøver vi kun ændre vores konfigurationsafsnit af pom.xml. Fjerninstallation betyder, at vi ikke har en lokal installation af Jetty, men har godkendt adgang til implementeringsappen, der kører på fjernserveren.

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

  jetty9x ekstern runtime 127.0.0.1 8080 administratoradgangskode 

Denne gang ændrer vi containertypen fra installeret til fjern og konfigurationstypen fra eksisterende til runtime. Endelig tilføjer vi værtsnavn, port og godkendelsesegenskaber til konfigurationen.

rengør projektet:

mvn ren

installer det:

mvn installere

endelig, implementer det:

mvn last: implementere

Det er det.

9. Implementering 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.

9.1. Indlejring af anløbsbro i formørkelse

Vi kan integrere en anlægsinstallation i formørkelse ved at vælge vindue element 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 bare skrive servere i søgefeltet.

Vi vælger derefter Jetty-kataloget, hvis det ikke allerede er åbent for os, og vælger den Jetty-version, vi downloadede.

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

Fra skærmbillederne erstattes anløbsbroen 7.x med den version af anløbsbroen, vi konfigurerede.

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

9.2. Implementering af webapplikation i indlejret anløbsbro

For at distribuere en webapplikation til den indlejrede Jetty-forekomst skal den eksistere i vores arbejdsområde.

Åbn servere visning fra vindue -> vis visning og se 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.

9.3. Implementering af 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 $ JETTY_HOME/webapps katalog over en ekstern anlægsinstallation.

10. Implementering fra IntelliJ IDEA

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

10.1. Lokal konfiguration

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

I panelet til venstre søger du efter Jetty Server, hvis det ikke er der, skal du klikke på + -tegnet i menuen, søge efter Anløbsbro og vælg Lokal. I navn felt sætte Anløbsbro 9.

Klik på Konfigurer ... knap og ind Anløbsbro Hjem 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

10.2. Fjernkonfiguration

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

11. Konklusion

I denne artikel har vi omfattende dækket de forskellige måder at implementere en WAR-fil på Jetty-webserveren.


$config[zx-auto] not found$config[zx-overlay] not found