Как включить горячую перезагрузку при запуске 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()) как это:

1 ответ

Решение

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

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

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

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