При перезапуске GWT DevMode Jetty не учитываются изменения кода сервера

Я только что скачал GWT 2.5.1 SDK. Я побежал:

./webAppCreator -out / home / myUser / tmp / dummygwt / com.dummygwt.OhHai

И это создало для меня проект GWT. Затем я перешел на /home/myUser/tmp/dummygwt/ и запустил:

муравей -buildfile build.xml devmode

И запустил инструмент GWT Development Mode, и я щелкнул Launch Default Browser, что привело к запуску моего приложения OhHai в Firefox.

Затем я перешел к /home/myUser/tmp/dummygwt/src/com/dummygwt/server/GreetingServiceImpl.java и открыл его для редактирования. Я изменил возвращаемое значение метода GreetingServiceImpl#greetServer на Bonjourno вместо Hello,. Таким образом, когда вы вводите свое имя и нажимаете кнопку «Отправить», во всплывающем диалоговом окне будет отображаться Bonjourno, .... (я просто играю и получаю удовольствие от этого.)

Я сохранил свои изменения в GreetingServiceImpl.java, а затем (внутри инструмента GWT Dev Mode) перешел на вкладку Jetty, щелкнул Restart Server и получил следующие предупреждения:

00: 14: 25.446 [WARN] Серверный класс com.google.gwt.dev.shell.jetty.JDBCUnloader не может быть найден в веб-приложении, но был найден в системном пути к классам

00: 14: 25.446 [WARN] Добавление файла записи пути к классам: /home/myUser/sandbox/dsi/workbench/gwt-sdk/gwt-2.5.1/gwt-dev.jar 'в путь к классам веб-приложения для этого сеанса Подробнее информация: файл: /home/myUser/sandbox/dsi/workbench/gwt-sdk/gwt-2.5.1/doc/helpInfo/webAppClassPath.html

Я обновил свой браузер, ввел новое имя и нажал «Отправить». Я все еще вижу Hello, ... вместо Bonjourno, .... Я что-то делаю не так, или это ошибка инструмента GWT Dev Mode? Заранее спасибо!

Примечание. Если я выйду из инструмента режима разработки (и закрою вкладку в моем браузере), а затем перезапущу режим разработки, изменения на стороне сервера действительно вступят в силу. Но в документации GWT четко указано, что для горячего развертывания серверного кода все, что вам нужно сделать, это перезапустить сервер из инструмента ... не выходить из него и полностью перезапускать инструмент ...


person IAmYourFaja    schedule 07.06.2013    source источник
comment
Вы проверили, установлен ли в вашем браузере подключаемый модуль разработчика GWT и URL-адрес содержит параметр gwt.codesrv = ... ??   -  person futuretelematics    schedule 09.06.2013
comment
Спасибо @futuretelematics (+1) - да, URL-адрес, который открывает браузер, http://127.0.0.1:8888/OhHai.html?gwt.codesvr=127.0.0.1:9997, однако я не уверен в подключаемом модуле разработчика GWT. Мне никогда не предлагали установить его, поэтому я решил, что он каким-то образом установился автоматически. (1) Разве это не так, и если да, то как я могу его установить? И (2) Почему отсутствие подключаемого модуля браузера предотвращает горячее развертывание серверного кода? Спасибо!   -  person IAmYourFaja    schedule 09.06.2013
comment
Привет! вам понадобится подключаемый модуль браузера GWT для Mozilla, чтобы браузер запрашивал у сервера GWT последнюю версию кода. Вы можете получить последнюю версию подключаемого модуля GWT для браузера по адресу gwt.googlesource.com/gwt-plugins, если вы используете другие браузеры, чем Mozilla, проще перейти на gwt.google.com/missing -plugin / MissingPlugin.html (нажмите плагины для других систем)   -  person futuretelematics    schedule 09.06.2013
comment
Еще раз спасибо @futuretelematics (+1) - однако установка плагина ни на что не повлияла. Изменение кода на стороне сервера по-прежнему не отображается, когда я перезапускаю сервер и обновляю страницу (F5). Я действительно думаю, что это связано с предупреждением JDBCUnloader ...   -  person IAmYourFaja    schedule 09.06.2013
comment
Вы запустили плагин GWT eclipse, встроенный в причал, в режиме отладки? (глупый вопрос, но другой проблемы я не вижу) ;-)   -  person futuretelematics    schedule 09.06.2013
comment
Я не использую плагин Google-Eclipse (@futuretelematics) - я попробовал и обнаружил, что он слишком глючный. Я создал проект с webAppCreator, который создал проект с файлом build.xml. В этом build.xml файле находится devmode цель, которую вы можете вызвать, выполнив ant -buildfile build.xml devmode, который запускает инструмент GWT Dev Mode. И я предполагаю, что он правильно инициализирует режим отладки ...   -  person IAmYourFaja    schedule 09.06.2013
comment
Поскольку вы являетесь командной строкой, вы скомпилировали измененный код?   -  person Lavie Tobey    schedule 18.06.2013
comment
У меня точно такая же проблема. Я просто выхожу из режима разработки и запускаю его снова. Я использую Eclipse Kepler M7. Возможно, плагин eclipse maven что-то делает неправильно.   -  person mabn    schedule 20.06.2013


Ответы (3)


Я почти уверен, что вам просто нужно перекомпилировать GreetingServiceImpl.java после того, как вы внесли свои изменения (вы не упомянули, что сделали это после внесения изменений). Перезапуск сервера не приведет к повторной компиляции всего волшебным образом для вас (но обычно это делает ваша IDE).

Обратите внимание, что горячее развертывание - это не то же самое, что «горячее развертывание».

person Renato    schedule 19.06.2013

Когда вы запускаете GWT DevMode, он будет отслеживать только изменения в клиентских java-классах.

Измените любой класс в любом пространстве имен клиента (src / com / dummygwt / client или src / com / dummygwt / shared), перезагрузите страницу в браузере, и вы увидите изменения.

Тем не менее, когда вы меняете классы на стороне сервера, вы должны скомпилировать их перед перезагрузкой сервера причала.

Измените класс на стороне сервера (например, GreetingServiceImpl.java) с помощью любого текстового редактора, затем запустите ant javac в другом терминале, и GreetingServiceImpl.class будет обновлен, наконец, нажмите кнопку «Перезапустить сервер», и вы увидите изменения.

Этот процесс намного проще, если вы редактируете свой класс в Eclipse, потому что по умолчанию Eclipse настроен на непрерывную компиляцию файлов .java в .class, поэтому перезагрузки сервера достаточно.

person Manolo Carrasco Moñino    schedule 20.06.2013

имя - просто кеш вызовов, и для применения настроек вам необходимо его перезагрузить. Есть много способов перезарядки, вам просто нужно забрать одну ведьму, что вам легче. close / open - один из них, вы также можете очистить его из веб-браузера, не выходя из него.

person MineScript    schedule 24.06.2013