2014-09-29 7 views
3

Я разрабатываю приложение Java Appengine Java, и перед этим я сталкиваюсь с серьезным тестированием проблем с локальным dev-сервером. Я сбросил инструменты Eclipse, потому что я более гибкий с Netbeans и Я использую плагин Appengine Maven для своей разработки.Работа с модулями на локальном dev-сервере для Java

Это мой пример структуры проекта:

MyApp
      модуль-оконечные
      модуля веб
      модуль уха
      ПОМ. xml

Приложение работает, когда я строй с mvn clean install на корневой папке (MYAPP), а также, когда я использую команду mvn appengine:devserver для запуска приложения модуля уха, однако я не могу показаться, чтобы получить доступ к облаку конечных точек с помощью http://localhost:8080/_ah/api. Я могу получить доступ только к API конечной точки через динамически выпущенный порт, когда я обращаюсь к нему через консоль администратора http://localhost:8080/_ah/admin.

Проблема с этим заключается в том, что при тестировании клиентом Javascript для облачных вычислений в проекте модуля-сети в соответствии с учебными пособиями я должен использовать localhost:8080/_ah/api как мой url для тестирования. Я что-то упускаю?

+0

Вы уверены, что используете правильный URL-адрес для локального API-браузера? Он должен быть http: // localhost: 8080/_ah/api/explorer' (но на самом деле это перенаправление). Знаете ли вы, что вы можете указать '' в '' вашего приложения 'pom.xml'? – tx802

+0

U знаете, когда вы запускаете приложение уха на dev-сервере, он генерирует случайный порт для приложения cloud-endpoints, если вы проверите свою консоль, вы найдете два указанных приложения, военное приложение будет работать на 8080, тогда как облачные конечные точки приложение запускается на другом порту (в основном случайный для каждого запуска). Если я обращаюсь к модулю конечных точек, например http: // localhost: 6789/_ah/api/explorer, он работает, но когда я пытаюсь получить доступ к нему, как этот http: // localhost: 8080/_ah/api/explorer он этого не делает. Спасибо. –

+0

Правильно, приложение, на которое я смотрел, имело конечные точки в том же модуле. Возможно, я попробую разделить конечные точки или на новый модуль и посмотреть, могу ли я воспроизвести проблему. Модуль ваших конечных точек является модулем по умолчанию? – tx802

ответ

2

Если у вас несколько развернутых модулей, вам необходимо обновить настройку запуска программы maven для распознавания различных модулей. См. Пример образца Java-приложения для модулей https://github.com/GoogleCloudPlatform/appengine-modules-sample-java.

Если вы уже сделали это, то dispatch.xml файл покажет приложение двигатель, как маршрутизировать запросы: https://cloud.google.com/appengine/docs/java/modules/routing

1

Он работал, когда я сделал конечные точки проекта модуля по умолчанию.

3

Если вопрос еще актуален, вы всегда можете обновить pom.xml с флагами, так что порты всех модулей определены:

<plugin> 
    <groupId>com.google.appengine</groupId> 
    <artifactId>appengine-maven-plugin</artifactId> 
    <version>${appengine.target.version}</version> 
    <configuration> 
     <port>8080</port> 
     <jvmFlags> 
     <jvmFlag>-Xdebug</jvmFlag> 
     <jvmFlag>-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n</jvmFlag> 
     <jvmFlag>-Dcom.google.appengine.devappserver_module.mymodule2.port=9090</jvmFlag> 
     </jvmFlags> 
     <disableUpdateCheck>true</disableUpdateCheck> 
    </configuration> 
    </plugin> 

Тогда вы могли бы использовать Localhost: 9090/_ah/API/исследователь для тестирования ваших API

+0

Серьезно @Herring, как вы узнали о 'devappserver_module.mymodule2.port'? Есть ли у вас какие-то другие золотые знания? Запустили ли вы установку уха в Intellij и видите, что «ваш рабочий каталог' ear-xxx' не соответствует 'ear-xxx/module-xxx', поэтому больше не работает' 'новый файл (« WEB-INF ») ? –

0

dispatch.xml проигнорирован на devserver, documentation указывает следующее.

Отправка файлов

Все диспетчерские файлы игнорируются при запуске сервера разработки. Единственный способ переназначения экземпляров - через их порты.

Это означает, что только модульпо умолчанию будет доступен на заданный порт (обычно 8888 или 8080). Я только что протестировал его с помощью приложения 1.9.25, и он не работает, поэтому никаких улучшений не было.

С другой стороны, вы всегда можете обратиться к модулю через его порт. расположение модуля регистрируется в консоли при запуске приложения, вы увидите что-то вроде:

INFO: Модуль экземпляра module2-авто работает на http://localhost:37251/

В моем случае это было бесполезно, так как я ожидал сделать запросы AJAX для разных модулей, используя один и тот же хост (но разные URL-адреса). Например:

+0

Вот как я решил проблему, о которой вы говорили («Я ожидал сделать запросы AJAX для разных модулей, используя один и тот же хост (но разные URL-адреса)»): http://blog.tomtasche.at/2015/12/multi -модуль-диспетчерская-для-appengine.html – TomTasche

Смежные вопросы