Как отлаживать сервлеты Google App Engine? - PullRequest
6 голосов
/ 29 февраля 2012

Я новичок в App Engine и пробую некоторые примеры веб-приложений на Java.Я не смог понять, как отлаживать проект веб-приложения java в eclipse.

Когда я запускаю конфигурацию отладки, запускается сервер Jetty, который является частью SDK, и я могу получить доступстраница из браузера.Но ни одна из моих точек останова в сервлетах не пострадала.Мне не хватает какой-то конфигурации для отладки?

Ответы [ 3 ]

4 голосов
/ 29 февраля 2012

Предполагая, что вы установили Плагин Google для Eclipse , это должно быть просто:

Run menu -> Debug As -> Web Application

Это, конечно, запускает ваше приложение на веб-сервере внутри Eclipse.отладчик.Подробнее см. Запуск проекта .

1 голос
/ 04 июля 2014

Для тех, кто пытается отладить Google App Engine с помощью Eclipse, но без использования плагина GAE Eclipse , я написал подробный ответ здесь: Рабочий процесс для ядра приложения + модулей + maven

Как и просили, вот копия ответа:


Я использую похожую структуру с небольшой разницей. Верхний уровень каталог имеет войну и слух, а затем они содержат свои конкретные pom.xml. Я использую Eclipse для отладки, и я могу выполнить горячее развертывание "большую часть времени", и я не использую плагин Eclipse, который (I

понимаю) это то, что вы хотите. Структура каталогов

.
|-- pom.xml
|-- README.md
|-- my-ear
|   |-- devpid
|   |-- pom.xml
|   `-- src
|       `-- main
|           `-- application
|               `-- META-INF
`-- my-war
    |-- build
    |   `-- classes
    |       |-- main
    |       |   |-- java
    |       |   `-- webapp
    |       `-- test
    |           `-- java
    |-- pom.xml
    `-- src
        |-- main
        |   |-- java
        |   |   `-- com
        |   `-- webapp
        |       |-- css
        |       |-- favicon.ico
        |       |-- index.html
        |       |-- js
        |       |-- test.html
        |       `-- WEB-INF
        `-- test
            `-- java

Инструменты

  • Eclipse Luna без плагина Google App Engine (или SDK)
  • Maven 3.2.1
  • Google App Engine SDK 1.9.6

Рабочий процесс Dev

  1. Если у вас уже есть исходный код, сохраните его где-нибудь еще и создайте скелет с помощью команды mvn appengine.
  2. Запустите первый разрез с помощью простого Hello World, используя только maven и терминал и команду mvn appengine: devserver.
  3. После этого создайте проект eclipse.
  4. Импортировать проект eclipse как проект Maven. Он увидит банки через Maven. Я не написал бы этот ответ перед Луной, поскольку это требовало слишком много настроек. В Луне это работает автоматически.
  5. Шаг выше создаст три проекта, верхнего уровня, ear и war, каждый с pom.xml - все нормально.
  6. В eclipse укажите выходной каталог как каталог war / target. Это тот шаг, который делает возможным горячее развертывание.
  7. В maven ear / pom.xml добавьте xArgs в плагин appengine для запуска в режиме отладки.

    <plugin>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>${appengine.target.version}</version>
        <configuration>
            <jvmFlags>
            <jvmFlag>-Xdebug</jvmFlag>
                <jvmFlag>-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n</jvmFlag>
            </jvmFlags>
            <disableUpdateCheck>true</disableUpdateCheck>
        </configuration>
    </plugin>
    
  8. Обратите внимание на приостановку = n.

  9. Запустите механизм приложений из внешнего затмения, используя mvn appengine: devserver из каталога ear . Я использую эту команду: `mvn appengine: devserver> ~ / .logs / .appengine.devserver.logs & echo $!

    devpid` Давайте назовем этот терминал 1.

  10. Преимущество этого метода в том, что Eclipse не захватывает вашу консоль, поэтому вы можете свободно использовать любой инструмент для его просмотра, например я использую эту простую команду tail: tail -f ~/.logs/.appengine.devserver.logs | sed 's/INFO/^[[0;34m&^[[0m/g;s/ERROR/^[[0;31m&^[[0m/g;s/WARN\|WARNING/^[[0;35m&^[[0m/g;s/SEVERE\|FATAL/^[[0;31;47m&^[[0m/g' Вышеприведенная команда сложна для ввода. Каждый экземпляр ^ [есть на самом деле Ctrl + V Esc - стоит напечатать его один раз. Но это, конечно, субъективно и зависит от вас.
  11. В Eclipse создайте профиль отладки для своего проекта в разделе Remote Java Application - выберите военный проект и параметры подключения к сокету.

Этот шаг доступен во многих местах в Интернете, но, тем не менее, это изображение Debug Config, Remote Application, War Socket Attach

  1. Откройте другой терминал, Терминал 2 в каталоге war и оставьте его открытым, чтобы при необходимости запустить mvn compile install.
  2. Вы готовы идти. Вы должны иметь возможность интегрировать свой исходный код, просто вставив его в нужное место. Вы также должны быть в состоянии использовать стандартные методы отладки. Затмение скомпилирует справа location и devserver все обнаружат. Если Затмение бросает предупреждение, игнорируй это.
  3. Это работает большую часть времени. Иногда вы сохраняете что-то, что нарушает компиляцию всего проекта, или меняете имя функции вызывается из предварительно скомпилированного класса или просто изменить web.xml, который загружается при запуске. Конечно, тогда горячее развертывание не будет работать.
  4. В этом случае остановите удаление отладки из затмения, завершите свои задачи, запустите mvn compile install из Терминала 2. Devserver автоматически обнаружит.
  5. В основном, мне едва нужно касаться хвоста, работающего в Терминале 1. Devserver, как правило, не нуждается в перезапуске.
  6. Если я не изменяю web.xml или не выполняю рефакторинг, мне не нужно запускать mvn compile install извне.

Моя причина для предоставления списка окон (Eclipse, Terminal 1 и Terminal 2) просто для того, чтобы показать, что Alt + Tab на самом деле быстрее, чем Shift + F7 из затмения. Это субъективно и конечно до вы.

1 голос
/ 29 сентября 2012

Проверьте, выбрана ли у вас опция «пропуск всех точек останова» в представлении точек останова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...