странно, почему вы думаете, что Jetty тормознутый — его очень многие используют, и как раз потому, что достаточно быстрый и расширяемый, с другой стороны небольшой. Уж по крайней мере по сравнению с приводимыми Tomcat и jBoss
Jetty используют в tankionline.com для выдачи статичного контента (конфигов, в частности).
Так что не думаю, что такой уж тормознутый, учитывая специфику указанного ресурса и посещаемость.
Да не думаю я так. Мне просто доводилось слышать подобные высказывания.
Я их не подтверждаю и не опровергаю, я говорю, что в данном контексте это неважно.
А почему вы не приводите в пример maven, в частности jetty-maven-plugin? Всякие IDE-зависимые вещи, как показывает опыт, очень сильно мешают в переспективе — настройка environment'а слишком затягивается для новых сотрудников или после восстановление системы, плюс всякие несовместимости плагинов и т.п.
Gradle — это, емнип, для grails. Поэтому не очень для дженеричной java. А Launcher хорош, но имхо, maven он более православный путь в том смысле, что уже есть велосипед :)
Ничего подобного, Gradle — инструмент для сборки любых проектов, и в частности, для Java он прекрасно подходит. Например, проект Hibernate перешёл на него год или два назад. Мы тоже его используем, очень удобно.
Если ты запускаешь приложение из Maven, как его дебажить? Есть, конечно, remote debug, но ведь его ещё надо настроить. Запускать дебаг одной кнопкой по-любому проще.
На счет дебага — эмебеддед jetty плагин запускается в том же процессе, что и мавен. Соответственно, когда ты запускаешь мавен таску из IDE в дебаге, соответственно он и код дебажит, поэтому все одной кнопкой.
С JPA и JSF взлетит спокойно, почему нет.
Насчёт CDI сказать не могу, не пробовал. Насчёт остальных JEE сложно сказать, надо рассматривать каждый в отдельности.
вся эта кухня с Jetty — просто жестко связываетя, то что Sun сознательно разделила. Вы бы попробовали тот же JPA на нормальном JEE контейнере — совсем другая песня, а с Jetty — тот-еще гемор с конфигами.
Мы пользуемся Sysdeo (для Tomcat) для Eclipse, который позволяет совместить контекст томката и проекта, потому не нужно собирание war-файла и подкладывание его контейнеру, всякий css, html и прочий js правится сразу, на горячую. В большинстве случаев работает hot replace.
Да, его я тоже пробовал. В общем, хорошая штука, делает примерно то же самое.
Но мне кажется, он требует больше телодвижений. И Томкат надо поставить, и какой-то новый «tomcat project» создать… А что, если я не хочу новый проект создавать? И структура этого проекта должна быть строго определённая…
И ещё он меняет сам Томкат (server.xml). В общем, хорошо, но можно проще.
Да, существующую кодовую базу сложно привести в соответствие с требованиями, накладываемыми плагином. Но можно, и делалось. server.xml насколько я помню не меняется, добавляется только описание нового контекста, но я могу ошибаться. В любом случае — это томкат локальный, если что — его не жалко. Ну и я написал по поводу Sysdeo наверное больше потому, что по-хорошему его бы тоже добавить в список альтернативных решений. Оно все же лучше, когда используется один и тот же контейнер на машине разработчика, и на сервере.
Не знаю, важно ли, но с седьмой версии Jetty названия пакетов и классов были поменяны с org.mortbay.jetty.* на org.eclipse.jetty.* — подробнее в Eclipse Wiki.
Соответственно, ваш код с более новыми версиями Jetty работать не будет (что, правда, пока не так сильно важно, поскольку и 6-ая и 7-ая версия поддерживаются; впрочем, сами разработчики Jetty рекомендуют для новых проектов использовать седьмую версию).
Если в проекте используется Maven, то все проблемы решаются Embeded Jetty плагином.
Eclispe и Idea умеют запускать MVN-задачи, а редеплоится Jetty будет автоматом в таком режиме (от этого правда больше негатива, чем позитива).
Спасибо за статью. Настроил все так же как вы и описывали. Однако приложение почему-то не подхватывает автоматически свежескомпиллированный код. Пользуюсь Intellij Idea (создал линк с out к WEB-INF/classes), работаю с javax.ws + org.restlet. Нужно ли мне что-то еще настраивать? Или это спицифика выбранных фреймворков?
Нет, ничего настраивать не надо. IDEA умеет сама подхватывать свежескомпилированные классы. Правда, есть ограничение, накладываемой явой: перекомпилированный класс подхватится, только если изменения внутри тела метода. А если изменился API (т.е. сигнатура метода, имя класса), то не подхватится. Но в обоих случаях IDEA явно говорит об этом пользователю: после компиляции в левом нижнем углу вслывает окошечко с надписью a'la «classes reloaded» или «classes could not be reloaded».
Кстити, в IDEA эту функциональность можно принудительно отключить. Может, она у вас отключена?
Из IDEA я не пробовал запускать Tomcat. Пробовал из Eclipse (точнее, MyEclipse). Во-первых, интерфейс был очень сложным. А во-вторых, скорость ужасающая. По каждому чиху MyEclipse копировала все статические ресурсы и java-классы в tomcat. Приложение большое, ресурсов было много — копирование тормозило жутко.
Быстрая разработка веб-приложений на Java