Обслуживаете несколько модулей GAE с одного сервера разработки?

Я конвертирую некоторые бэкэнды в модули и озадачен настройкой конфигурации среды разработки. Я использую Java в Eclipse, но не Maven. Архитектура очень проста:

  • Модуль переднего плана по умолчанию. Основное приложение GAE/GWT. Помещает элементы в очередь задач.
  • Внутренний модуль обрабатывает очередь задач.

При старой серверной архитектуре одна отладочная конфигурация запускает сервер разработки, который будет обслуживать пользовательский интерфейс GWT DevMode и обработку серверной задачи.

Суть проблемы в том, что аргументы DevMode предоставляют аргумент командной строки -war. Теперь, когда у нас больше нет ни одного файла военных действий (есть ухо, содержащее два файла военных действий), мы должны запустить их независимо. Это нормально, мы можем создать Launch Group, которая запускает внешний и внутренний интерфейсы.

Проблема в том, что каждый файл war получает свой собственный WEB-INF/appengine-генерируемый /local_db.bin, который по сути создает два автономных приложения. Я что-то здесь упускаю? Мне нужно иметь возможность установить точку останова на моем внешнем RPC-сервисе и в сервлете, который обрабатывает элементы очереди задач в новом бэкэнде и позволяет им обоим работать в одном сеансе отладки.

Спасибо за любые мысли.

2 ответа

Решение

Если вы будете следовать приведенным здесь инструкциям, это создаст модульную структуру приложения в Eclipse, а не Maven вообще. Вам понадобится Eclipse WTP, чтобы были доступны необходимые типы проектов (Enterprise Application Project и Dynamic Web Project).

Структура проекта Eclipse должна выглядеть следующим образом:

<<Enterprise Application Project>> ear-app
    |
    | (refers to)
    |
<<Dynamic Web Project>> app-module-1  "default"
<<Dynamic Web Project>> app-module-2  "any_name_2"
<<Dynamic Web Project>> app-module-3  "any_name_3"
<<Dynamic Web Project>> app-module-4  "any_name_4"

Значение "name" относится к элементу "module" в appengine-web.xml, тогда как физический веб-проект может иметь любое имя.

Обратите внимание, что вам нужно переключиться в перспективу J2EE, чтобы были доступны опции меню GPE WTP, они не отображаются в стандартной перспективе Java.

Затем вам нужно связать проект EAR с новым экземпляром локального сервера (типа "Google App Engine").

Только один из веб-модулей должен быть помечен как "по умолчанию" в appengine-web.xml.

После развертывания EAR на локальном сервере местоположение хранилища данных находится в WEB-INF/appengine-генерируемый /local_db.bin веб-модуля по умолчанию и является общим для веб-модулей.

У меня похожие проблемы с выяснением того, как реализовать несколько модулей в плагине MyEclipse для Google App Engine. Лучшая информация, которую я нашел, просто говорит об использовании Maven.

"Хотя Java EE поддерживает файлы WAR, в конфигурации модуля используются только распакованные каталоги WAR. Java SDK App Engine включает в себя инструмент Apache Maven, который может создать для вас скелетную структуру EAR". (источник: https://developers.google.com/appengine/docs/java/modules/)

Я также нашел это:

"Проект Maven имеет другой макет, нежели проект Eclipse. Поэтому, если вы хотите использовать проект Maven с Eclipse, вам нужно проделать немного больше работы. У вас есть следующие варианты:

1] Импортируйте проект Maven для App Engine в Eclipse как проект платформы веб-инструментов (WTP), как описано в разделе Импорт существующего проекта Maven.

2] Импортируйте проект Maven в Eclipse, используя соответствующий плагин интеграции Maven, например m2eclipse.

3] Настройте две конфигурации отладки, одну для проекта Maven в devserver (mvn appengine:devserver) и одну для удаленного Java-приложения, которое вы используете для подключения клиента отладки Eclipse к devserver jvm. Подробнее о том, как это сделать, см...." (источник: https://developers.google.com/appengine/docs/java/tools/maven)

Я знаю, что вы сказали, что не используете Maven, но не могли бы вы попробовать?

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