ПредишенСледващото

Бързото развитие на уеб приложения на Java

Както се разработи уеб приложение Java?

Бързото развитие на уеб приложения в Ява

След всяка промяна как можете да го ползвате и да се провери? Колко време се преразпределят приложения и рестартиране на контейнера?

Виждал съм различни варианти: общото възстановяване на войната-файла, за да използват приставки за IDE като MyEclipse, ПСПВ и "конектори" за konterynerov на сървлета. Някои от тях са очевидни недостатъци, това е друга работа - но има по-лесен начин!

Zapuskalka


Този метод увеличава развитието просто и гъвкаво конфигуриране на приложението с минимално redeploya време. Вие трябва само да напишете проста Java класа с основен-метод, който започва Jetty сървъра веднага с необходимите приложения (така наречения вграден режим).

Ето zapuskalka минимална конфигурация:

Този код започва сървър (сървлет контейнер) за слушане на порт 8080, с три уеб-базирани приложения, кодът за която е взет директно от папката на проекта (корен / SRC / основна / уеб приложение. Доклади / SRC / основна / уеб приложение и petclinic / SRC / основна / уеб приложение), тоест, всички промени в файловете ще влязат в сила незабавно. без да е необходимо да го прекомпилирате и peredeploit.

Разбира се, с добавянето на нови методи ще трябва да се рестартира, но в този случай, да се рестартира се извършва възможно най-бързо, буквално в рамките на секунди (разбира се, ако вашите приложения не правят нещо сложно, когато започнете). Ако това е и вратовръзка JRebel, шоколад ще свърши работа.

Това е цялата работа.
Разбира се в Flot не използвате Jetty, и нещо като Tomcat, JBoss или WebLogic. Няма значение, защото ние говорим за развитие, където скорост, стабилност и т.н. маловажно и важно лекота на настройка, скоростта на изпълнение и redeploya. Тогава Embedded Jetty - точно това, което лекарят подредени.

Можете просто да изпълните основната-класа на своята възлюбена на IDE, отстраняване на грешки, тестове, рестартиране; и не се нуждаят от плъгини не е нужно да се търси конфигурационни файлове, не трябва да се копае в XML'ah. Всички настройки на една ръка разстояние. Това е животът!

За да стартирате минимална конфигурация е достатъчно и в трите JAR-файлове: сървлет-api.jar, jetty.jar, кей-util.jar.

[UPD] Както бе предложено kblcuk. zapuskalki горния код работи само за версията на Jetty 6. Започвайки с седмата версия на кея пакетни имена и класове са били променени от org.mortbay.jetty. * на org.eclipse.jetty. *, така че аз трябва да се коригира внос.

Помислете за някои допълнителни функции, които могат да бъдат полезни в зависимост от проекта.

клас товарач

В горния код зарежда класове и в зависимост от всички уеб приложения в един товарач (ClassLoader). Ако по някаква причина е важно уеб приложения имат различни набори от класове и зависимости (jar'ov), тя може да бъде направено чрез написването на малко код:

Аз самият активно го използва, когато трябваше да се изпълнява само много уеб приложения, всеки със своите (конфликтни) зависимости. Много просто, много удобно.

Старото поколение помнят, че незабравими моменти за HTML форма често се използва такова нещо като JSP. Ако използвате във вашия проект JSP, ще трябва да се добавят няколко зависимости: затъмнение-jdtcore.jar, JSP-API-2,1-glassfish.jar, JSP-2,1-glassfish.jar

Конфигурация JDBC-ресурси

Може би има по-просто решение, но такъв вариант съм спечелил:

За да направите това, вие също ще трябва малко повече зависимостта: transactions.jar, кей-naming.jar, сделки-api.jar, сделки-jta.jar, сделки-jdbc.jar, atomikos-util.jar

Възможно ли е да се автоматизира това е все още малко?

Ако списъкът на уеб приложения постоянно се променя, тя може да има смисъл да се напише плъгин за Eclipse или идея, която ще бъде стартирана Jetty с всички проекти, които в момента са в Eclipse. Един такъв плъгин е описан тук - той намира всички проекти, които имат web.xml файл, както и други проекти добавя към тях в CLASSPATH.

Заради обективност се опитаме да назове някои от капаните, свързани с този подход.

  • (Въображаеми минус) Jetty контейнер е по-малък в производителността Tomcat, JBoss, смола и др.
    Глупости. Ние говорим за развитието - след изпълнението е абсолютно не е важно.
    Между другото, това е все още един въпрос, дали по-ниско.
  • (Въображаеми минус) Контейнер Jetty нестабилна / понякога катастрофи надолу / че съдържа изтичане на памет.
    Глупости. Вижте. Предходната алинея.
  • Ако вашето приложение се използва свойствата на даден контейнер (особено WebLogic и Oracle AS), а след това в Jetty работи, разбира се, няма да.
    Може би нищо не може да се направи. Мога да посъветвам само да не използвате тези функции за вашето приложение не зависи от контейнера.
  • Понякога това се случва, че молбата Ви работи добре на вашия компютър вграден режим Jetty но се срива надолу, се събират по време на войната и се инсталира на друг сървър.
    Това е много рядко, но се случва. Относителната честота, може да се провали, защото на classloaders или версии jar'ov.

алтернативи

За забавление, това ще запиша алтернатива за развитие на уеб приложения в Java с неговата субективна преценка.

Остава да добавим, че в вграден режим, не може просто да тичам Jetty, но Tomcat, GlassFish и др специфичен контейнер не е важно, важен принцип. Не дългосрочно възстановяване, инсталиране, разопаковането и настройка. Всичко започна бързо и лесно от един клас.

Аз самият съм разработване на уеб приложение, така че в продължение на няколко години, а останалата част от съвети. Така че ще харчат по-малко време в суматохата около сглобяването и монтажа, както и да се концентрирате върху същинското проектиране.

Подкрепете проекта - споделете линка, благодаря!