Как отладить приложение GWT, работающее на OSGi? - PullRequest
1 голос
/ 17 июня 2010

Я разрабатываю веб-интерфейс с использованием GWT. Работая только с виджетами, я мог отлаживать из Eclipse, используя расширение Firefox, но теперь, когда я интегрирую пользовательский интерфейс с другими пакетами OSGi, я не могу использовать это решение.

Для развертывания приложения GWT я создаю .war и конвертирую его в комплект OSGi, используя BND . Затем я запускаю контейнер OSGi со всеми пакетами, используя Pax Runner и Pax Web, и приложение работает правильно, но когда что-то не получается в сгенерированном коде JavaScript, у меня нет приличной ошибки вывода или средства отладки.

Есть ли способ запустить приложение GWT в "режиме отладки" из OSGi?

Есть еще идеи, которые могут помочь в этом сценарии?

Обновление: Можно ли создать экземпляр com.google.gwt.dev.DevMode или его часть с помощью разъема браузера из Activator?

Ответы [ 2 ]

1 голос
/ 21 июня 2010

Мне наконец-то удалось запустить режим разработки с использованием OSGi, GWT и опционально затмения. Решение было на флаге -noserver режима разработки GWT, он не знает об изменениях кода во время работы приложения, но его можно использовать для отладки скомпилированного кода и получения трассировок исключений.

Мне также удалось запустить оболочку разработки без Eclipse, но если вы не заинтересованы в этом решении, вы можете сразу перейти к разделу интеграции Eclipse.

Без Eclipse (только исключения, без отладки)

Вам необходимо знать следующую информацию:

  • Где у вас источник ($SRC)
  • Где у вас есть библиотеки GWT ($GWT_PATH), особенно gwt-user.jar и gwt-dev.jar.
  • (Опционально) порт, с которого сервер HTTP OSGi обслуживает приложение ($PORT).
  • URL запуска вашего приложения ($URL)
  • Пакет, содержащий файл .gwt.xml для вашего приложения ($PACKAGE).

Тогда вам нужно запустить:

java -cp $SRC:$GWT_PATH/gwt-user.jar:$GWT_PATH/gwt-dev.jar \
    com.google.gwt.dev.DevMode -noserver -port $PORT \
    -startupUrl $URL $PACKAGE

например:.

java -cp src/:lib/gwt-2.0.3/gwt-user.jar:lib/gwt-2.0.3/gwt-dev.jar \
    com.google.gwt.dev.DevMode -noserver -port 8080 \
    -startupUrl httplocalgui.html es.warp.samples.httplocalgui

И, наконец, вам нужно развернуть ваше приложение как обычно, в моем примере я делаю это с pax-runner и pax-web, используя порт по умолчанию 8080.

С затмением

  1. Откройте конфигурацию отладки для вашего проекта
  2. Перейдите на вкладку Сервер и снимите флажок «Запускать встроенный сервер»
  3. Перейдите на вкладку «Атрибуты» и добавьте «-port 8080» (если 8080 - это порт, используемый вашим веб-контейнером). Я думаю, что этот аргумент без встроенного сервера используется только для создания URL, который генерирует режим разработки для вызова браузера (или что elipse использует для генерации URL, который вы можете скопировать и вставить в адресную строку браузера).
  4. Разверните ваше приложение.
  5. Доступ к нему из браузера с установленным расширением GWT (и не забудьте добавить ?gwt.codesvr=127.0.0.1:9997)
0 голосов
/ 17 июня 2010

В последнее время у меня была такая же проблема, и, к сожалению, я не нашел хорошего решения.

В конце концов я создал ложные реализации всех сервисов GWT, которые я использую в своем коде на стороне клиента. Когда мне нужно отладить код на стороне клиента, я просто переключаюсь на эти сервисы вместо реальных сервисов, использующих OSGi. Затем в Eclipse я могу запустить приложение GWT в режиме отладки. Это далеко от совершенства и требует некоторой работы с макетами, но это работает для меня (по крайней мере, сейчас).

...