Как вы разрабатываете приложения JSF?

Я впервые работаю над проектом, который требует создания веб-приложения, интенсивно использующего JSF (и, в частности, ICEfaces). Существует множество разных вещей, которые нужно кодировать, включая CSS, HTML, JSP / Java и, конечно же, JSF.

Я делаю все это в Eclipse, кстати, и использую локальный сервер tomcat, который eclipse отвечает за запуск, чтобы запустить приложение.

Во всяком случае, я замечаю, что все это происходит очень медленно. Когда я меняю один фрагмент JSF, мне приходится перезапускать веб-сервер, чтобы увидеть новые результаты. Часто мне просто интересно поиграть с макетом, и 10-15 + секунд, которые требуются для остановки, перезапуска, обновления, сводят меня с ума. Я перезагружаю кота по сто раз в день - ах! Мне нужно быстрее!

Я делаю что-то неправильно? Это естественное состояние для всех вас, веб-разработчиков?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
0
1 659
8

Ответы 8

Я разрабатываю свои приложения на JSF с почти такой же конфигурацией (Tomcat 5.5, запущенный моим Eclipse 3.3 с JBoss Tools). Я также использую Facelets для JSF, и в web.xml есть важный параметр контекста, который я могу установить, чтобы иметь возможность изменять мои файлы XHTML с автоматическим обновлением (т.е. мне не нужно перезапускать Tomcat, чтобы увидеть мои изменения). Итак, в моем web.xml у меня есть следующее:

<context-param>
    <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
    <param-value>1</param-value>
</context-param>

Я разрабатываю приложение JSF с eclipse и maven. Оно автоматически перезагружается, когда в программе вносятся изменения и вы сохраняете это изменение. При изменении любого файла конфигурации необходимо перезапускать.

Вы, вероятно, можете обойти это, по крайней мере, для битов макета / разметки, напрямую скопировав обновленные файлы разметки в соответствующий каталог webapp.

Взгляните на развернутый файл WAR и найдите свой файл разметки. Вы можете изменить это напрямую или переместить туда обновленный файл. Обновите браузер позже, и ваша разметка должна быть изменена!

Вероятно, вы сможете сделать это быстрее, добавив для этого команду ANT. Я работаю с Netbeans, и я не очень хорошо разбираюсь в ANT (и мои крайние сроки не дают мне времени, чтобы понять это), поэтому я сделал небольшой сценарий оболочки, который помещает все мои файлы в развернутые каталоги WAR.

Однако, если вы измените Java или файлы конфигурации, вам потребуется повторно развернуть WAR. Я не уверен, какую версию Tomcat вы используете, но чтобы сделать это на моем экземпляре Tomcat 6, просто переместив файл WAR в каталог webapps, Tomcat подберет его и повторно развернет.

Но будьте осторожны! Функциональность горячего развертывания Tomcat 6 работает нормально, но не освобождает память PermGen, использованную предыдущим развертыванием правильно. Поэтому после нескольких горячих развертываний Tomcat начинает выдавать исключения «Ошибка PermGen: недостаточно памяти», и единственный выход - перезагрузка.

Если вы просто играете с CSS, используйте что-то вроде Firebug, чтобы отредактировать его на месте, а затем, когда вы будете счастливы, вы можете скопировать и вставить все это за один раз в Eclipse. То же HTML; фактически, когда вы знаете, куда направляются ваши компоненты JSF, просто создайте фиктивную страницу, а затем отредактируйте ее в IDE для быстрой веб-разработки.

Частые перезагрузки Tomcat для веб-разработки обычно не требуются :)

Я использую Jboss Developer Studio (v2.0), и мой проект настроен на горячее развертывание. Это означает, что мне не нужно перезапускать какие-либо изменения, кроме Entities, EJBs и Message Bundles. Идеально подходит для большинства проектов POJO.

Раньше я сам разрабатывал JSF-страницы в Eclipse без каких-либо дизайнерских инструментов (они мне не нравятся). Сложно создать сложный макет пользовательского интерфейса с помощью инструмента дизайнера - инструменты предназначены только для простых макетов. Когда у вас много DHTML, CSS, вы должны сами писать страницы.

О перезапуске сервера: если вы правильно настроите Tomcat, изменение страницы JSP не приведет к перезапуску сервера (горячее развертывание или что-то подобное). Если вы измените сигнатуры методов в beans, вы, конечно, должны перезапустить.

Вам не нужно перезапускать Tomcat, чтобы увидеть изменения. Просто скопируйте WAR в $ CATALINA_HOME / webapps, чтобы приложение было развернуто само. Однако это займет несколько секунд.

Есть несколько способов развертывания, см. Этот документ для Tomcat 6: http://www.mbaworld.com/docs/appdev/deployment.html

У меня была такая же проблема. Быстрое решение для мгновенного повторного развертывания вашего кода с использованием JavaRevel (бесплатно для некоммерческого использования, стоит копейки, если вы хотите использовать его в своей компании) http://www.zeroturnaround.com/javarebel/

надеюсь это поможет,

Другие вопросы по теме