Dezvoltarea rapidă a aplicațiilor web pe java

Dezvoltarea rapidă a aplicațiilor web în Java

Cum dezvoltați o aplicație web în Java?

Dezvoltarea rapidă a aplicațiilor web pe java

După fiecare schimbare, cum o executați și o verificați? Cât timp durează să reaplicați aplicația și să reporniți containerul?







Am văzut diferite variante: totalul reconstrui WAR-fișier pentru a utiliza plug-in-uri pentru IDE, cum ar fi MyEclipse, WTP și „conectori“ pentru konterynerov servlet. Unele dintre ele au deficiențe evidente, este o altă lucrare - dar există o cale mai ușoară!

Zapuskalka


Această metodă de dezvoltare vă permite să configurați ușor și flexibil aplicația cu un timp minim pentru reamenajare. Trebuie doar să scrieți o singură clasă Java cu o metodă principală care va lansa imediat serverul Jetty cu aplicațiile potrivite (așa-numitul Mod încorporat).

Iată cum arata lansatorul în configurația minimă:

Acest cod pornește serverul (servlet container) asculta pe portul 8080, cu trei aplicatii bazate pe web, codul care este luat direct din directorul proiectului (root / src / main / aplicație web. Rapoarte / src / main / webapp și petclinic / src / main / webapp), adică toate modificările aduse fișierelor au efect imediat. fără a fi necesară reasamblarea și rearanjarea.

Desigur, cu adăugarea de noi metode vor trebui să fie repornit, dar în acest caz, o repornire are loc cât mai repede posibil, literalmente în câteva secunde (desigur, în cazul în care aplicațiile nu fac ceva complex, atunci când începe). Daca in continuare si pentru a fixa JRebel, va fi, in general, ciocolata.

Asta e totul.
Desigur, în producție nu utilizați Jetty, ci ceva de genul Tomcat, JBoss sau WebLogic. Nu contează, acum vorbim despre dezvoltare, unde viteza, stabilitatea etc. nu sunt importante, dar importanța setării ușoare, a vitezei de lansare și a reamenajării este importantă. Și apoi Embedded Jetty este ceea ce medicul a prescris.

Puteți rula pur și simplu această clasă principală din IDE-ul dvs. preferat, debug, test, reporniți; și nu aveți nevoie de niciun plugin, nu trebuie să căutați fișiere de configurare, nu trebuie să sapi în XML. Toate setările sunt la îndemână. Aceasta este viața!

Pentru a rula în configurația minimă, doar trei fișiere de jar: servlet-api.jar, jetty.jar, jetty-util.jar.







[UPD] Așa cum a sugerat kblcuk. zapuskalki funcționează Codul de mai sus doar pentru versiunea de Jetty 6. Începând cu a șaptea versiune a Jetty, nume de pachete și clase au fost schimbate de la org.mortbay.jetty. * pe org.eclipse.jetty. *, așa că trebuie să corecteze de import.

Luați în considerare unele caracteristici suplimentare care pot fi utile în funcție de proiect.

Încărcătoare de clasă

Codul de mai sus încarcă clasele și dependențele tuturor aplicațiilor web într-un singur încărcător (ClassLoader). Dacă dintr-un anumit motiv este important pentru dvs. ca aplicațiile web să aibă seturi diferite de clase și dependențe (borcane), acest lucru se poate face și prin adăugarea unui mic cod:

Am folosit-o singură în mod activ când aveam nevoie să rulez multe aplicații web, fiecare cu dependențe proprii (conflictuale). Foarte simplu, foarte convenabil.

Cronometre amintesc că în momentele de neuitat pentru formarea HTML folosim adesea un astfel de lucru ca JSP. Dacă utilizați, de asemenea, în proiectul JSP, va trebui să adăugați câteva dependențe: Eclipse-jdtcore.jar, .jsp-api-2,1-glassfish.jar, .jsp-2,1-glassfish.jar

Configurarea resurselor JDBC

Poate că există o soluție mai simplă, dar iată o opțiune pe care am câștigat-o:

Pentru a face acest lucru, veți avea nevoie, de asemenea, un pic mai mult de dependență: transactions.jar, debarcader-naming.jar, tranzacțiile-api.jar, tranzacțiile jta.jar, tranzacțiile-jdbc.jar, atomikos-util.jar

N-ar putea fi ceva mai automatizat?

În cazul în care lista de aplicații Web este în continuă schimbare, s-ar putea face sens pentru a scrie un plugin pentru Eclipse sau IDEA, care va fi lansat Jetty cu toate proiectele care sunt în prezent în Eclipse. Un astfel de plugin este descris aici - găsește toate proiectele care au un fișier web.xml, și alte proiecte adaugă la acestea în classpath.

Obiectivitate de dragul încercării de a numi unele dintre capcanele care sunt ascunse în această abordare.

  • (Imaginar minus) Containerul Jetty este inferior în performanță față de Tomcat, JBoss, Resin și altele.
    Prostii. Acum vorbim despre dezvoltare - aici performanța nu este absolut importantă.
    Apropo, aceasta este încă o întrebare dacă este inferioară.
  • (Imaginar minus) Containerul Jetty este instabil / uneori se blochează / conține scurgeri de memorie.
    Prostii. Consultați paragraful anterior.
  • Dacă aplicația dvs. utilizează anumite caracteristici specifice ale unui anumit container (în special WebLogic sau Oracle AS), atunci nu va funcționa pe Jetty.
    Probabil, nu poți face nimic despre asta. Nu pot decât să recomand să nu folosiți astfel de caracteristici, astfel încât aplicația dvs. să nu depindă de container.
  • Uneori se întâmplă ca aplicația să funcționeze bine pe computerul dvs. în modul Embedded Jetty, dar se blochează atunci când este asamblat în război și instalat pe un alt server.
    E rar, dar se întâmplă. În frecvență, poate apărea o eroare datorită încărcătorilor de clasă sau versiunilor cu jar.

alternative

Din motive de interes, voi enumera modalități alternative de dezvoltare a aplicațiilor web Java cu evaluarea dvs. subiectivă.

Rămâne să adaug că, în modul încorporat, nu se poate rula doar Jetty, dar Tomcat, Glassfish etc. Un container specific nu este important principiu, important. Nu pe termen lung de reconstrucție, instalare, despachetați și configurare. Totul începe rapid și ușor dintr-o clasă.

Eu însumi am dezvoltat aplicații web în acest mod de mai mulți ani și îi sfătuiesc pe toți ceilalți. Deci, veți petrece mai puțin timp pe agitația din jurul asamblării și instalării și veți putea să vă concentrați asupra dezvoltării reale.







Trimiteți-le prietenilor: