Обслуживаете несколько модулей 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, но не могли бы вы попробовать?