2013-11-21 2 views
6

Я использую несколько модулей с Google AppEngine и задавался вопросом, можно ли запустить сервер разработки (java-версию), чтобы порты, назначенные для разных модулей, всегда были одинаковыми? На данный момент они кажутся случайными. Могу ли я принять решение об этих портах? Я хотел бы иметь возможность установить связь между модулями на устойчивой основе (с точки зрения развития). На данный момент, если у нас есть два модуля, давайте назовем их A и B, и мы хотели бы использовать сервисы, открытые модулем A в модуле B, нет простого способа узнать, какой URL-адрес попадает из модуля B.Модули GAE на сервере разработки

ответ

-2

Хотя modules service может быть полезен в этом сценарии, и я считаю, что это сработает, я решаю проблему немного по-другому.

Я изменил свой скрипт сборки, чтобы запустить все модули на локальном хосте, но на другом порту (по сути, есть несколько локальных экземпляров appengine). Информация о конфигурации (IP: PORT) хранится в файле конфигурации и легко доступна для любого модуля. Для развертывания я все еще упаковываю приложение в архив .

+0

Можете ли вы поделиться своими настройками конфигурации? –

+0

Как вам удалось установить разные порты для каждого модуля? – Gapipro

+2

Это не полезный ответ, поскольку он рекомендует подход, совершенно отличный от установленных практик и собственной документации Google. Лучший ответ - это номукаики, так как именно это делают официальные приложения Google. –

1

Не думаю, что Google обеспечит легкий подход к этой проблеме. Вам нужно будет использовать the modules service и перенести его на ваш вспомогательный класс, например LinkFactory, с помощью методов, таких как getLinkToA(String) и getLinkToB(String), и вы их везде, где вы создаете ссылки на модули.

Same (и больше) проблема в том, что вы используете the dispatch file. Это на самом деле большая проблема, потому что части вашего приложения переднего конца могут потерпеть неудачу, поскольку маршрутизация не работает на сервере разработки.

+0

Должен признать свою огромную проблему, когда вещи легко начинаются. –

8

Можно установить порт каждого модуля с использованием параметров JVM.

-Dcom.google.appengine.devappserver_module.{module_name}.port=8081 

Я использую Appengine-Maven-плагин со следующей конфигурацией (мой заказ модуль называется «анализ»):

<plugin> 
    <groupId>com.google.appengine</groupId> 
    <artifactId>appengine-maven-plugin</artifactId> 
    <configuration> 
     <jvmFlags> 
     <jvmFlag>-Ddatastore.backing_store=${project.basedir}/target/local_db.bin</jvmFlag> 
     <jvmFlag>-Xdebug</jvmFlag> 
     <jvmFlag>-Dcom.google.appengine.devappserver_module.analysis.port=8081</jvmFlag> 
     <jvmFlag>-XX:MaxPermSize=512m</jvmFlag> 
     <jvmFlag>-agentlib:jdwp=transport=dt_socket,address=8001,server=y,suspend=n</jvmFlag> 
     </jvmFlags> 
     <enhancerApi>JPA</enhancerApi> 
     <fullScanSeconds>2</fullScanSeconds> 
    </configuration> 
</plugin> 

Когда я бегу МВН AppEngine: devserver то журналы, соответствующие этот модуль выглядит следующим образом:

[INFO] INFO: Started [email protected]:8081 
[INFO] Jun 10, 2014 10:44:16 AM com.google.appengine.tools.development.JettyContainerService startHotDeployScanner 
[INFO] INFO: Full scan of the web app in place every 2s. 
[INFO] Jun 10, 2014 10:44:16 AM com.google.appengine.tools.development.AbstractModule startup 
[INFO] INFO: Module instance analysis is running at http://localhost:8081/ 
[INFO] Jun 10, 2014 10:44:16 AM com.google.appengine.tools.development.AbstractModule startup 
[INFO] INFO: The admin console is running at http://localhost:8081/_ah/admin 
[INFO] Jun 10, 2014 11:44:16 AM com.google.appengine.tools.development.DevAppServerImpl doStart 
[INFO] INFO: Dev App Server is now running 

Надеюсь, это помогло.

2

Вы можете установить порт модуля через системное свойство в файле appengine-web.xml модуля. Например:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> 
    <module>MY_MODULE</module> 
    <version>v1</version> 
    <threadsafe>true</threadsafe> 
    <system-properties> 
     <property name="com.google.appengine.devappserver_module.MY_MODULE.port" 
      value="8081"/> 
    </system-properties> 
</appengine-web-app> 
Смежные вопросы