Uvođenje web aplikacija u Jetty

1. Pregled

U ovom ćemo članku napraviti kratki pregled web poslužitelja Jetty, a zatim ćemo obraditi razne pristupe postavljanju WAR datoteke.

Jetty je Java HTTP web poslužitelj otvorenog koda i spremnik servleta. Pristanište se češće koristi u međusobnoj komunikaciji u ekosustavu Java.

2. Postavljanje projekta

Najnoviju verziju Jetty uvijek možete preuzeti slijedeći ovu poveznicu. Iz naredbenog retka s Mavenom stvorit ćemo vrlo osnovnu Java web aplikaciju koju ćemo koristiti za primjere.

U ovom članku koristimo Jetty 9.x, trenutno najnoviju verziju.

Idemo na našu konzolu, dođite do željenog mjesta i pokrenite sljedeću naredbu:

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

Ova će naredba stvoriti kompletnu Java web aplikaciju unutar nove mol-app mapa na našem trenutnom mjestu. To je samo jedan od mnogih načina stvaranja Java aplikacije s Mavenom i odgovara našoj svrsi.

Budući da ćemo se baviti WAR datotekama, idemo do korijena projekta i napravimo ga:

cd jetty-app

Zgrada s Mavenom:

mvn paket

Zatim jetty-app.war stvorit će se na mjestu jetty-app / target / jetty-app.war.

3. Struktura mola

Put konteksta. Odnosi se na mjesto koje je u odnosu na adresu poslužitelja i predstavlja naziv web aplikacije.

Na primjer, ako je naša web aplikacija stavljena pod $ JETTY_HOME \ webapps \ myapp direktoriju, pristupit će mu URL // localhost / myapp, a njegov će kontekst put biti / myapp.

RAT. Je li nastavak datoteke koja pakira hijerarhiju direktorija web aplikacija u ZIP formatu i skraćenica je od Web Archive. Java web aplikacije obično se pakiraju kao WAR datoteke za implementaciju. WAR datoteke mogu se stvoriti na naredbenom retku ili s IDE-om poput Eclipsea.

4. Raspoređivanje kopiranjem WAR-a

Najlakši način za postavljanje web aplikacije na Jetty poslužitelj je vjerojatno kopiranjem WAR datoteke u $ JETTY_HOME / webapps imenik.

Nakon kopiranja, poslužitelj možemo pokrenuti tako da prijeđemo na $ JETTY_HOME i izvođenje naredbe:

java -jar start.jar

Pristanište će ga skenirati $ JETTY_HOME / webapps direktorij pri pokretanju za postavljanje web aplikacija. Naša nova aplikacija bit će postavljena na / jetty-app kontekst.

Kada učitamo URL // localhost: 8080 / jetty-app iz preglednika bismo trebali vidjeti kako naša aplikacija radi Pozdrav svijete! ispisano na ekran.

5. Razmještanje pomoću kontekstne datoteke

Jetty web poslužitelj nudi nam put do rasporediti web arhivu smještene bilo gdje u datotečnom sustavu tako što smo za njega stvorili kontekstualnu datoteku.

Na taj način, čak i ako se naša WAR datoteka nalazi na radnoj površini ili smo je odlučili zadržati jetty-app / target tamo gdje Maven smješta paket, možemo samo stvoriti njegovu kontekstnu datoteku unutra $ JETTY_HOME / webapps.

Razdvojimo jetty-app.war upravo smo rasporedili brisanjem iz webapps. Tada ćemo stvarati jetty-app.xml sa sljedećim kodom i smjestite ga unutra webapps:

   / apsolutni pomol / put / do / jetty-app.war 

Ova kontekstna datoteka mora imati isto ime kao i naš RATs proširenjem XML datoteke. Primijetite da smo postavili contextPath pripisati /brana. To znači da ćemo našoj web aplikaciji pristupiti s URL-a // localhost: 8080 / mol.

Ova sposobnost prilagodbe kontekstnog puta jedna je od velikih prednosti pristupa kontekstnoj datoteci postavljanja WAR-ova u Jetty, jer neka imena aplikacija možda nisu prikladna za tu svrhu.

6. Uvođenje s dodatkom Jetty Maven

6.1. Zadana implementacija

Dodatak Maven za pomod pomaže nam u brzom testiranju i ponavljanju tijekom izrade Java web aplikacija. Da bismo s njim mogli implementirati i pokretati aplikacije, trebamo samo dodati dodatak pom.xml:

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

Najnoviju verziju možete pronaći slijedeći ovu vezu Maven.

Moramo osigurati da naša instanca Jetty-a radi na luci 8080 zaustavlja se prije nego izvršimo sljedeći korak.

Da bismo primijenili našu aplikaciju nakon dodavanja dodatka, idemo do korijena where pom.xml nalazi se i izvodi sljedeću naredbu:

mvn jetty: trči

Ova naredba stvara novu instancu mola, a dodatak joj postavlja aplikaciju. Možemo mu pristupiti učitavanjem // localhost: 8080.

Dodatak Maven kontinuirano skenira web projekt radi bilo kakvih promjena i neprestano ga preraspodjeljuje.

6.2. Promjena ContextPath

Iz prethodnog pododjeljka aplikacija je postavljena pod / kontekst. Međutim, ako bismo se željeli rasporediti prema zadanom kontekstnom putu kao što je /brana kao i prije, morat ćemo i dodatak drugačije konfigurirati.

Promijenit ćemo našu deklaraciju dodatka u sljedeći XML:

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

Primijetite kako smo dodali konfiguracijski blok kako bismo dodatno prilagodili našu implementaciju. Postoji nekoliko mogućnosti konfiguracije koje se mogu smjestiti unutar ovog bloka, ovisno o tome što netko želi.

Nakon ovih promjena možemo ponovno pokrenuti dodatak kao i prije i pristupiti našoj aplikaciji // localhost: 8080 / mol.

6.3. Promjena luke

Scenarij s kojim se čovjek može suočiti je izuzetak priključka koji se koristi. Možda imamo pristanište koje radi na luci 8080 za proizvodnju, ali još uvijek smo u fazi razvoja i želimo imati koristi od jednostavnosti iteracije koja dolazi s postavljanjem pomoću dodatka Maven.

U takvim slučajevima testni poslužitelj moramo pokrenuti na drugom priključku. Promijenimo konfiguraciju dodatka u sljedeći XML:

  / mol 8888 

Kada ponovo pokrenemo dodatak Maven, moći ćemo pristupiti našoj aplikaciji s // localhost: 8888 / jetty.

Vrijedno je napomenuti da s dodatkom jetty Maven ne moramo instalirati i izvoditi primjerak mola. Umjesto toga, stvara vlastiti primjer mola.

7. Raspoređivanje s Jetty Runnerom

Baš poput dodatka Maven za jetty, trkač mola nudi brz i jednostavan način za postavljanje i pokretanje naše web aplikacije. S jetty-runnerom također ne trebamo instalirati i pokretati zasebnu instancu jetty poslužitelja.

7.1. Postavljanje Jetty Runnera

Da bismo koristili jetty-runner u brzom postavljanju i pokretanju naših web aplikacija, možemo preuzeti najnoviju verziju slijedeći ovu vezu Maven.

S jetty-runnerom njegovu preuzetu teglu trebamo smjestiti samo kamo god poželimo i biti spremni za put do datotečnog sustava do naše web arhive.

Možemo prenijeti konfiguracijske parametre iz naredbenog retka, kao i razmjestiti brojne programe u različitim kontekstima i vezane za različite portove samo jednom naredbom.

Stavio sam svoju staklenku za morski trkač u istu hijerarhiju kao i mol-app imenik. To je direktorij koji sadrži našu web aplikaciju.

7.2. Osnovna implementacija

Postavimo svoj WAR koristeći jetty-runner:

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

Ova naredba, baš kao i slučaj dodatka Maven, stvara instalaciju mota i na nju raspoređuje pruženi WAR. Put RATA može biti apsolutni ili relativni put.

Ovu aplikaciju možemo učitati pomoću // localhost: 8080.

7.3. Postavite s kontekstnim putem

Za raspored pod /brana kontekst kao i prije:

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

Dostupno putem // localhost: 8080 / mol.

7.4. Raspoređivanje na zadanoj luci

Za postavljanje na zadani broj porta:

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

Dostupno putem // localhost: 9090.

7.5. Postavite više WAR-ova

Za postavljanje nekoliko WAR-ova s ​​istom naredbom koristimo -staza argument kako bi svaki bio jedinstven:

java -jar jetty-runner --path / one one.war --path / two two.war

Tada bismo pristupili jedan.rat preko // localhost: 8080 / jedan i dva.rat preko // localhost: 8080 / dva.

8. Primjena uz dodatak Cargo Maven

Cargo je svestrana knjižnica koja nam omogućuje standardnu ​​manipulaciju raznim vrstama spremnika aplikacija.

8.1. Postavljanje postavljanja tereta

U ovom ćemo odjeljku pogledati kako upotrijebite Cargo-ov dodatak Maven za postavljanje RATA na Jetty, u ovom ćemo slučaju rasporediti WAR na instancu Jetty 9.x.

Da bismo se čvrsto uhvatili u čitav postupak, započet ćemo ispočetka stvaranjem nove Java web aplikacije iz naredbenog retka:

mvn arhetip: generiraj -DgroupId = com.baeldung -DartifactId = cargo-deploy -DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false

To će stvoriti cjelovitu Java web aplikaciju u razmještanje tereta imenik. Ako napravimo, implementiramo i učitamo ovaj program onakav kakav jest, ispisat će se Pozdrav svijete! u pregledniku.

Budući da naša web aplikacija ne sadrži servlete, naša web.xml datoteka će biti vrlo osnovna. Dakle, idite na WEB-INF mapu našeg novostvorenog projekta i stvorite a web.xml ako još nije automatski stvoren sa sljedećim sadržajem:

  indeks razmještaja tereta.jsp 

Da bismo Mavenu omogućili prepoznavanje naredbi tereta bez upisivanja potpuno kvalificiranog imena, moramo dodati dodatak cargo Maven u grupu dodataka u Mavenu postavke.xml.

Kao neposredno dijete korijena element, dodajte ovo:

 org.codehaus.cargo 

8.2. Lokalno postavljanje

U ovom ćemo pododjeljku urediti naš pom.xml kako bi odgovarali našim novim zahtjevima za implementaciju.

Dodatak dodajte na sljedeći način:

   org.codehaus.cargo cargo-maven2-plugin 1.5.0 instaliran jetty9x Umetnite apsolutni put do postojeće instalacije mola 9 Umetnite apsolutni put do instalacije jetty 9 

Primijetite da mi izričito definirajte pakiranje kao RAT, bez ovoga naša gradnja neće uspjeti. U odjeljak dodataka dodajemo dodatak cargo maven2.

Najnovija verzija u vrijeme pisanja ovog teksta je 1.5.0. Međutim, najnoviju verziju uvijek možete pronaći ovdje. Uz to, dodajemo odjeljak za konfiguraciju u kojem Mavenu kažemo da koristimo spremnik Jetty, a također i postojeću instalaciju Jetty.

Postavljanjem vrste spremnika na instaliran, kažemo Mavenu da imamo instalaciju Jetty instaliranu na stroju i dajemo apsolutni URL ovoj instalaciji.

Postavljanjem vrste konfiguracije na postojanje, kažemo Mavenu da imamo postojeću postavku koju koristimo i nije potrebna dodatna konfiguracija.

Alternativa bi bila reći teret da preuzme i postavi verziju Jettyja navedenu davanjem URL-a. Međutim, naš fokus je na Raspoređivanje RATA.

Vrijedno je napomenuti da, koristimo li Maven 2.x ili Maven 3.x, dodatak cargo maven2 radi i za jedno i za drugo.

Sada možemo instalirati našu aplikaciju izvršavanjem:

mvn instalirati

i rasporedite ga pokretanjem:

mvn teret: rasporediti

Ako sve bude dobro u konzoli Maven i Jetty, tada bismo trebali moći pokrenuti našu web aplikaciju učitavanjem // localhost: 8080 / cargo-deploy.

Ako provjerimo $ JETTY_HOME / webapps mapu, pronaći ćemo datoteku deskriptora implementacije ili ono što smo ranije nazivali kontekstnom datotekom cargo-deploy.xml stvoreni teretom.

8.3. Daljinsko postavljanje

Prema zadanim postavkama, Jetty ne nudi mogućnosti daljinskog postavljanja. Da bi dodao takvu podršku Jettyju, Cargo koristi Daljinski raspoređivač mola Web aplikacija.

To znači da moramo preuzeti web-aplikaciju WAR koju su unaprijed kreirali programeri Cargo-a, rasporediti ovaj WAR u ciljani kontejner.

Svaki put kad se želimo rasporediti na ovaj udaljeni poslužitelj pomoću dodatka cargo Maven, on će poslati HTTP zahtjev aplikaciji za postavljanje na udaljenom poslužitelju s našim RATOM za implementaciju.

Ovaj udaljeni program za postavljanje možete pronaći ovdje. Krenite prema alata odjeljak i preuzmite cargo-jetty-7-i-nadalje-raspoređivač RAT.

Sigurnosna razmatranja

Moramo postaviti a područje sigurnosti u pomolu prije nego što ovo može raditi, u svrhu provjere autentičnosti. Stvorite datoteku pod nazivom carstvo.svojstva u $ JETTY_HOME / itd direktorij udaljenog jetty poslužitelja. Sadržaj datoteke je:

admin: lozinka, upravitelj

The admin je korisničko ime kojim klijent može pristupiti zaštićenim aplikacijama, zaporka je lozinka i menadžer je uloga koju klijenti moraju imati prije nego što im se odobri pristup.

U aplikaciji za postavljanje također moramo navesti svoje sigurnosne zahtjeve. Raspakirat ćemo RAT koji smo preuzeli sa stranice za preuzimanje mola, izvršiti neke promjene i spakirati ga natrag u RAT.

Nakon raspakiranja, krenite prema WEB-INF / web.xml i raskomentirajte XML kôd s Raskomentirajte kako biste aktivirali sigurnost komentar. Ili tamo smjestite sljedeći kod:

  Jetty Remote Deployer / * manager OSNOVNO Test područje 

Postavljanje raspoređivača

Sada aplikaciju možemo spakirati natrag u RAT i kopirati je na bilo koje mjesto na udaljenom poslužitelju. Zatim ćemo ga rasporediti u Jetty.

Tijekom postavljanja, najbolje je koristiti a datoteka deskriptora implementacije kako bismo mogli stvoriti a sigurnostHandler i prijeđite na njega a loginService. Sve osigurane aplikacije moraju imati uslugu prijave, jer ih inače mort neće uspjeti rasporediti.

Sada, kreirajmo datoteku konteksta u $ JETTY_HOME / webapps instance udaljenog mola, sjetite se pravila imenovanja kontekstne datoteke. Neka to bude isto ime kao i RAT:

   / deployer absolute / path / to / cargo-jetty-deployer.war Test Carm /etc/realm.properties 

Pokrenite udaljeni poslužitelj za pomol i ako sve bude u redu, trebali bismo se moći učitati // localhost: 8080 / cargo-jetty-deployer. Tada bismo trebali moći vidjeti nešto poput:

HTTP POGREŠKA 400 Problem pri pristupu / cargo-jetty-deployer /. Razlog: Naredba / nepoznata

Uvođenje WAR-a na udaljeni Jetty

Da bismo izvršili daljinsko postavljanje, potrebno je samo promijeniti naš odjeljak za konfiguraciju pom.xml. Daljinsko postavljanje znači da nemamo lokalnu instalaciju Jettyja, ali imamo ovjereni pristup aplikaciji za postavljanje koja se izvodi na udaljenom poslužitelju.

Pa promijenimo pom.xml tako da odjeljak za konfiguraciju izgleda ovako:

  jetty9x daljinsko izvršavanje 127.0.0.1 8080 administratorska lozinka 

Ovaj put mijenjamo vrstu spremnika iz instaliran do daljinski a tip konfiguracije od postojanje do vrijeme izvođenja. Konačno, konfiguraciji dodajemo svojstva hosta, priključka i svojstva provjere autentičnosti.

očistite projekt:

mvn čist

instalirajte ga:

mvn instalirati

konačno, rasporedite ga:

mvn teret: rasporediti

To je to.

9. Pokretanje iz Eclipsea

Eclipse nam omogućuje ugrađivanje poslužitelja kako bismo dodali implementaciju web projekata u uobičajeni tijek rada bez napuštanja IDE-a.

9.1. Ugradnja mola u Eclipse

Odabirom možemo ugraditi Jetty instalaciju u eclipse prozor stavku s programske trake, a zatim preferencije s padajućeg izbornika.

Na lijevoj ploči prozora koji će se pojaviti pronaći ćemo mrežu stabala stavki preferencija. Tada možemo prijeći na eclipse -> poslužitelje ili jednostavno upisati poslužitelje u traku za pretraživanje.

Zatim odabiremo direktorij Jetty ako nam već nije otvoren i odabiremo verziju Jetty koju smo preuzeli.

Na desnoj strani panela pojavit će se stranica s konfiguracijom na kojoj odabiremo opciju za aktiviranje ove verzije Jetty i pregledavanje instalacijske mape.

Od snimaka zaslona, ​​pomol 7.x bit će zamijenjen inačicom mola koju smo konfigurirali.

Primjenjujemo promjene i sljedeći put kada otvorimo prikaz poslužitelja iz prozora eclipsea -> pokaži prikaz, prikazat će se novokonfigurirani poslužitelj i na njega možemo pokretati, zaustavljati i postavljati aplikacije.

9.2. Razmještanje web aplikacija u ugrađenom pomolu

Da bi web aplikacija postavila na ugrađenu Jetty instancu, ona mora postojati u našem radnom prostoru.

Otvori poslužitelji pogled iz prozora -> prikaži prikaz i potražite poslužitelje. Kad je otvoren, možemo samo desnom tipkom miša kliknuti poslužitelj koji smo konfigurirali i odabrali dodati raspored iz kontekstnog izbornika koji se pojavi.

Od Nova implementacija dijaloški okvir koji se pojavi, otvorite projekt padajućeg izbornika i odaberite web projekt.

Tamo je Vrsta primjene odjeljak ispod Projekt kombinirani okvir kada odaberemo Exploded Archive (razvojni način), naše promjene u aplikaciji sinkronizirat će se uživo bez potrebe za ponovnim rasporedom, ovo je najbolja opcija tijekom razvoja jer je vrlo učinkovita.

Odabir Pakirana arhiva (produkcijski način) zahtijevat će da se preusmjerimo svaki put kad izvršimo promjene i vidimo ih u pregledniku. Ovo je najbolje samo za proizvodnju, ali ipak, Eclipse to čini jednako jednostavnim.

9.3. Postavljanje web aplikacije na vanjsko mjesto

Obično odlučimo rasporediti WAR putem Eclipsea kako bismo olakšali ispravljanje pogrešaka. Možda dođe vrijeme kada želimo da se postavi na mjesto koje nije ono što koriste ugrađeni poslužitelji Eclipsea.

Najčešći je slučaj kada je naš proizvodni poslužitelj na mreži i želimo ažurirati web aplikaciju.

Ovu proceduru možemo zaobići postavljanjem u produkcijski način i bilježenjem Postavite lokaciju u Nova implementacija dijaloški okvir i odabir RATA odatle.

Tijekom implementacije, umjesto odabira ugrađenog poslužitelja, možemo odabrati opcija iz poslužitelji pogled uz popis ugrađenih poslužitelja. Idemo do $ JETTY_HOME/webapps direktorij vanjske Jetty instalacije.

10. Uvođenje iz IntelliJ IDEA

Da bi web aplikacija postavila na Jetty, ona mora postojati i već je preuzeta i instalirana.

10.1. Lokalna konfiguracija

Otvori Trčanje i kliknite na Uredi konfiguracije mogućnosti.

Na ploči s lijeve strane potražite Jetty poslužitelj, ako ga nema, pritisnite znak + u izborniku, potražite Brana i odaberite Lokalno. U Ime polje staviti Pristanište 9.

Pritisnite Konfigurirati… gumb i unutra Jetty Home polje dođite do matične lokacije vaše instalacije i odaberite je.

Po želji postavite Pokretanje stranica koja treba biti // localhost: 8080 / i HTTP priključak: 8080, promijenite port prema potrebi.

Idite na Raspoređivanje karticu i kliknite simbol +, odaberite artefakt koji želite dodati na poslužitelj i kliknite U redu

10.2. Daljinska konfiguracija

Slijedite iste upute kao i za lokalne konfiguracije Jettyja, ali na kartici poslužitelja morate unijeti udaljeno mjesto instalacije.

11. Zaključak

U ovom smo članku opsežno razmotrili razne načine postavljanja WAR datoteke na web poslužitelj Jetty.


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