Otklanjanje pogrešaka proljetnih aplikacija

1. Uvod

Otklanjanje pogrešaka jedan je od najvažnijih alata za pisanje softvera.

U ovom uputstvu pregledat ćemo neke od načina na koje možemo ispraviti pogreške u programima Spring.

Također ćemo vidjeti kako Spring Boot, tradicionalni poslužitelji aplikacija i IDE to pojednostavljuju.

2. Argumenti za otklanjanje pogrešaka Java

Prvo, pogledajmo što nam Java daje iz kutije.

Prema zadanim postavkama JVM ne omogućuje ispravljanje pogrešaka. To je zato što otklanjanje pogrešaka stvara dodatne troškove unutar JVM-a. To može biti i sigurnosna briga za programe koji su javno dostupni.

Stoga, otklanjanje pogrešaka treba izvoditi samo tijekom razvoja a nikada na proizvodnim sustavima.

Prije nego što možemo priložiti program za ispravljanje pogrešaka, prvo moramo konfigurirati JVM da omogući uklanjanje pogrešaka. To radimo postavljanjem argumenta naredbenog retka za JVM:

-agentlib: jdwp = transport = dt_socket, server = y, suspend = n, adresa = 8000

Razdvojimo što svaka od ovih vrijednosti znači:

-agentlib: jdwp

Omogućite agent Java Debug Wire Protocol (JDWP) unutar JVM-a. Ovo je glavni argument naredbenog retka koji omogućuje ispravljanje pogrešaka.

transport = dt_socket

Koristite mrežnu utičnicu za veze za otklanjanje pogrešaka. Ostale opcije uključuju Unix utičnice i zajedničku memoriju.

poslužitelj = y

Slušajte dolazne veze za ispravljanje pogrešaka. Kad se postavi na n, postupak će se pokušati povezati s programom za otklanjanje pogrešaka umjesto da čeka dolazne veze. Dodatni argumenti potrebni su kada je ovo postavljeno na n.

suspendirati = n

Nemojte čekati vezu za otklanjanje pogrešaka pri pokretanju. Aplikacija će se normalno pokretati i izvoditi dok se ne priključi program za ispravljanje pogrešaka. Kad se postavi na g, postupak neće započeti dok se ne priključi program za ispravljanje pogrešaka.

adresa = 8000

Mrežni priključak koji će JVM preslušavati radi povezivanja za otklanjanje pogrešaka.

Gornje vrijednosti su standardne i funkcionirat će za većinu slučajeva korištenja i operativne sustave. Vodič za povezivanje JPDA detaljnije pokriva sve moguće vrijednosti.

3. Proljetne aplikacije za pokretanje

Aplikacije Spring Boot mogu se pokrenuti na nekoliko načina. Najjednostavniji je način iz naredbenog retka pomoću Java naredba sa -jar opcija.

Da bismo omogućili ispravljanje pogrešaka, jednostavno bismo dodali argument za uklanjanje pogrešaka pomoću -D opcija:

java -jar myapp.jar -Dagentlib: jdwp = transport = dt_socket, server = y, suspend = n, address = 8000

S Mavenom možemo koristiti predviđeno trčanje cilj pokrenuti našu aplikaciju s omogućenim otklanjanjem pogrešaka:

mvn spring-boot: run -Dagentlib: jdwp = transport = dt_socket, server = y, suspend = n, address = 8000

Isto tako, s Gradleom možemo koristiti bootRun zadatak. Prvo moramo ažurirati graditi.gradle datoteka koja osigurava da Gradle prosljeđuje argumente naredbenog retka JVM-u:

bootRun {systemProperties = System.properties}

Sada možemo izvršiti bootRun zadatak:

gradle bootRun -Dagentlib: jdwp = transport = dt_socket, poslužitelj = y, suspend = n, adresa = 8000

4. Poslužitelji aplikacija

Iako je Spring Boot postao vrlo popularan posljednjih godina, tradicionalni aplikacijski poslužitelji i dalje su prilično rašireni u modernim softverskim arhitekturama. U ovom ćemo odjeljku pogledati kako omogućiti ispravljanje pogrešaka za neke od popularnijih poslužitelja aplikacija.

Većina poslužitelja aplikacija nudi skriptu za pokretanje i zaustavljanje aplikacija. Omogućavanje otklanjanja pogrešaka obično je samo pitanje dodavanja dodatnih argumenata ovoj skripti i / ili postavljanja dodatnih varijabli okruženja.

4.1. Mačak

Nazvana je skripta za pokretanje za Tomcat catalina.sh (catalina.bat na Windowsima). Da bismo pokrenuli Tomcat poslužitelj s omogućenim otklanjanjem pogrešaka, možemo se pripremiti jpda na argumente:

catalina.sh jpda start

Zadani argumenti za otklanjanje pogrešaka koristit će mrežnu utičnicu za preslušavanje na portu 8000 sa suspendirati = n. To se može promijeniti postavljanjem jedne ili više sljedećih varijabli okruženja: JPDA_TRANSPORT , JPDA_ADRESA, i JPDA_SUSPEND.

Također možemo dobiti potpunu kontrolu nad argumentima za otklanjanje pogrešaka postavljanjem JPDA_OPTS . Kad je postavljena ova varijabla, ona ima prednost nad ostalim JPDA varijablama. Stoga to mora biti potpuni argument za otklanjanje pogrešaka za JVM.

4.2. Divlja muha

Startna skripta za Wildfly je samostalno.š. Da bismo pokrenuli Wildfly poslužitelj s omogućenim otklanjanjem pogrešaka, možemo dodati –Debug.

Zadani način otklanjanja pogrešaka koristi mrežni slušatelj na portu 8787 sa obustaviti = n. Luku možemo nadjačati tako da je navedemo nakon –Debug argument.

Za veću kontrolu nad argumentom za otklanjanje pogrešaka, možemo samo dodati kompletne argumente za otklanjanje pogrešaka u JAVA_OPTS varijabla okoline.

4.3. Weblogic

Skripta za pokretanje Weblogica je startWeblogic.sh. Da bismo pokrenuli Weblogic poslužitelj s omogućenim otklanjanjem pogrešaka, možemo postaviti varijablu okruženja otklanjanje pogrešakaZastavak do pravi.

Zadani način otklanjanja pogrešaka koristi mrežni slušatelj na portu 8453 sa suspendirati = n. Možemo nadjačati port postavljanjem DEBUG_PORT varijabla okoline.

Za veću kontrolu nad argumentom za otklanjanje pogrešaka, možemo samo dodati kompletne argumente za otklanjanje pogrešaka u JAVA_OPTIONS varijabla okoline.

Najnovije verzije Weblogic također nude dodatak Maven za pokretanje i zaustavljanje poslužitelja. Ovaj će dodatak uvažavati iste varijable okruženja kao i skripta za pokretanje.

4.4. Staklena ribica

Startup skripta za Glassfish je asadmin. Da bismo pokrenuli Glassfish poslužitelj s omogućenim otklanjanjem pogrešaka, moramo koristiti –Debug:

asadmin početna domena --debug

Zadani način otklanjanja pogrešaka koristi mrežni slušatelj na priključku 9009 sa suspendirati = n.

4.5. Brana

Poslužitelj aplikacija Jetty ne dolazi sa skriptom za pokretanje. Umjesto toga, Jetty poslužitelji počinju koristiti Java naredba.

Stoga je omogućavanje ispravljanja pogrešaka jednostavno kao dodavanje standardnih argumenata JVM naredbenog retka.

5. Otklanjanje pogrešaka iz IDE-a

Sad kad smo vidjeli kako omogućiti ispravljanje pogrešaka u različitim vrstama aplikacija, pogledajmo povezivanje ispravljača.

Svaki moderni IDE nudi podršku za uklanjanje pogrešaka. To uključuje i mogućnost pokretanja novog postupka s omogućenim otklanjanjem pogrešaka, kao i mogućnost ispravljanja pogrešaka u već pokrenutom procesu.

5.1. IntelliJ

IntelliJ nudi prvoklasnu podršku za aplikacije Spring and Spring Boot. Otklanjanje pogrešaka jednostavno je poput navigacije do klase pomoću glavni metodom, desnom tipkom miša kliknite ikonu trokuta i odaberite Otklanjanje pogrešaka.

Ako projekt sadrži više aplikacija Spring Boot, IntelliJ će pružiti prozor alata Pokreni nadzornu ploču. Ovaj nam prozor omogućuje otklanjanje pogrešaka u više aplikacija Spring Boot s jednog mjesta:

Za aplikacije koje koriste Tomcat ili druge web poslužitelje možemo stvoriti prilagođenu konfiguraciju za otklanjanje pogrešaka. Pod, ispod Trčanje >Uredi konfiguracije, postoji niz predložaka za najpopularnije poslužitelje aplikacija:

Napokon, IntelliJ olakšava povezivanje s bilo kojim pokrenutim procesom i uklanjanje pogrešaka. Sve dok je aplikacija pokrenuta s odgovarajućim argumentima za otklanjanje pogrešaka, IntelliJ se može povezati s njim, čak i ako je na drugom hostu.

Na Pokreni / otkloni pogreške zaslon, Daljinski Predložak će nam konfigurirati kako se priložiti na već pokrenutu aplikaciju:

Imajte na umu da IntelliJ treba znati samo ime hosta i port za uklanjanje pogrešaka. Kao pogodnost, govori nam o ispravnim argumentima JVM naredbenog retka koji bi se trebali koristiti u aplikaciji koju želimo ispraviti.

5.2. Zasjeniti

Najbrži način za otklanjanje pogrešaka u programu Spring Boot u Eclipseu je desni klik glavne metode s bilo kojeg Istraživač paketa ili Obris prozori:

Zadana instalacija Eclipsea ne podržava Spring ili Spring Boot iz kutije. Međutim, postoji dodatak Spring Tools dostupan na Eclipse Marketplace koji pruža proljetnu podršku usporedivu s IntelliJ-om.

Najvažnije dodatak nudi nadzornu ploču za podizanje sustava koja nam omogućuje upravljanje s više aplikacija Spring Boot s jednog mjesta:

Dodatak također nudi a Proljetni čizme Konfiguracija pokretanja / otklanjanja pogrešaka koja omogućuje prilagođavanje otklanjanja pogrešaka jedne aplikacije Spring Boot. Ovaj prilagođeni prikaz dostupan je sa svih istih mjesta kao i standardni Java aplikacija konfiguracija.

Za otklanjanje pogrešaka u već pokrenutom procesu, lokalno ili na udaljenom hostu, možemo koristiti Udaljeni Java program konfiguracija:

6. Otklanjanje pogrešaka s Dockerom

Otklanjanje pogrešaka s programom Spring u spremniku Docker može zahtijevati dodatnu konfiguraciju. Ako se spremnik izvodi lokalno i ne koristi način mrežne mreže, tada port za otklanjanje pogrešaka neće biti dostupan izvan spremnika.

Postoji nekoliko načina za izlaganje porta za otklanjanje pogrešaka u Dockeru.

Možemo koristiti -izložiti s docker run naredba:

docker pokretanje --expose 8000 mydockerimage

Možemo dodati i IZLOŽITI direktiva za Dockerfile:

IZLOŽITE 8000

Ili ako koristimo Docker Compose, možemo ga dodati u YAML:

izloži: - "8000"

7. Zaključak

U ovom smo članku vidjeli kako omogućiti ispravljanje pogrešaka za bilo koji Java program.

Jednostavnim dodavanjem jednog argumenta naredbenog retka lako možemo ispraviti pogreške u bilo kojem Java programu.

Također smo vidjeli da i Maven i Gradle, kao i najpopularniji IDE-ovi, imaju specijalizirane dodatke za olakšavanje otklanjanja pogrešaka Spring i Spring Boot aplikacija.


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