Как включить горячую перезагрузку при запуске Errai на Tomcat?

Я разрабатываю проект с Errai 4, и, как обычно, я могу запустить «mvn gwt:run», и горячая перезагрузка просто работает, т.е. я меняю модели или представления, и мне нужно только обновить браузер.

Теперь мне это нужно, но я запускаю приложение Errai поверх Tomcat 7.

Проект с Tomcat похож на https://github.com/stbland/errai-tutorial-tomcat

Вопрос в том, как заставить горячую перезагрузку работать с Tomcat 7, когда я вношу изменения только во внешний интерфейс, используя только mvn gwt:run или аналогичный.

Пошаговое окончательное решение:

Информация для решения этой проблемы:

Установить исходный проект

Для этого примера мы будем использовать errai-tutorial

Запуск на Tomcat

Изменения прослушивания

  • cd errai-учебник
  • mvn gwt: компилировать
  • mvn gwt: запустить

Теперь вы можете открыть http://localhost:8080/errai-tutorial/ в своем веб-браузере.

Для горячей перезагрузки вам потребуется импортировать этот класс в свой проект:

и назовите его таким образом (SuperDevModeHelper.devModeOn()) следующим образом:


person Tlaloc-ES    schedule 09.04.2019    source источник


Ответы (1)


Взгляните на этот архетип https://github.com/tbroyer/gwt-maven-archetypes/

Модульное веб-приложение настраивает tomcat и gwt для совместной работы. Горячая перезагрузка работает, потому что gwt:codeserver генерирует специальный загрузчик (ваш-приложение.nocache.js), который немедленно запускает компиляцию gwt и перезагружается по завершении. Чтобы заставить его работать, вам нужно загрузить сгенерированный gwt:codeserver каталог запуска в контекст tomcat, это делается в этом архетипе с помощью context.xml.

В качестве альтернативы вы можете добавить некоторый триггер компиляции в свое собственное приложение, чтобы запускать компиляцию с помощью ярлыка. Это все, что вам нужно для запуска компиляции (DevModeHelper). Просто добавьте обработчик ярлыков в точку входа вашего приложения и вызовите devModeOn(). Если вы не хотите добавлять его в окончательную компиляцию, устанавливайте прослушиватель событий только в том случае, если System.getProperty("superdevmode").equals("on") равно true. В этом случае используйте классическую закладку Dev Mode On в первый раз, а затем используйте собственный ярлык. Мы используем эту стратегию, и она прекрасно работает.

person Ignacio Baca    schedule 10.04.2019
comment
Я пытаюсь использовать второй метод: в коде учебника errai я импортировал DevModeHelper, и после этого я вызываю DevModeHelper.devModeOn(); на AppSetup.init() после этого выполняю учебник errai-tomcat и редактирую часть кода на html-страницах, поэтому, когда Я обновляю страницу или пытаюсь сделать mvn clean и установить снова, что-то происходит, и страница не перезагружается с изменениями, есть идеи? - person Tlaloc-ES; 23.04.2019
comment
Но вы не должны вызывать devModeOn при запуске каждого приложения, иначе оно будет обновляться бесконечно. Чтобы попробовать, добавьте кнопку и вызовите devModeOn при нажатии кнопки. Кроме того, откройте консоль, чтобы проверить, есть ли какие-либо ошибки. Вы должны поддерживать работу superDevMode, не перезапускать и не вызывать mvn clean, иначе это нарушит компиляцию gwt. - person Ignacio Baca; 23.04.2019
comment
Мне нужно было выполнить этот errai-учебник с помощью mvn gwt:run - person Tlaloc-ES; 23.04.2019