2013-11-21 73 views
6

我在Google AppEngine中使用多个模块,并且想知道是否可以运行开发服务器(Java版本),以便分配给不同模块的端口始终相同?目前他们似乎是随机的。我可以决定这些端口吗?我希望能够以可持续的方式(从发展角度)建立模块之间的沟通。目前,如果我们有两个模块,我们称它们为A和B,并且我们想要使用模块B中的模块A公开的服务,但没有简单的方法知道从模块B打哪个URL。开发服务器上的GAE模块

回答

-2

虽然modules service可能会在这种情况下有用,我相信它会工作,我用一种不同的方式解决问题。

我修改了我的构建脚本以在本地主机上运行所有模块,但是在不同的端口上(实际上有几个本地appengine实例正在运行)。配置信息(IP:PORT)存储在配置文件中,任何模块均可轻松访问。对于部署,我仍然将应用程序打包成耳朵存档。

+0

你能分享你的配置设置吗? –

+0

您是如何设置每个模块的不同端口的? – Gapipro

+2

这不是一个有用的答案,因为它建议的方法完全不同于既定的做法和Google自己的文档。最好的答案是nomukaiki,因为这正是Google官方示例应用程序所做的。 –

1

我不知道我们不认为Google会为这个问题提供任何简单的方法。您必须使用the modules service并使用getLinkToA(String)getLinkToB(String)等方法将其包装到您的帮助类(例如LinkFactory)中,并将它们随处创建到模块的链接。

如果您使用the dispatch file,则同样的(也是更大的)问题。这实际上是一个更大的问题,因为您的前端应用程序的某些部分可能会失败,因为路由在开发服务器中不起作用。

+0

必须承认它是一个巨大的问题,让事情轻松开始。 –

8

可以使用JVM参数设置每个模块的端口。

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

我使用应用服务引擎-行家-插件具有以下配置(我的定制模块被称为“分析”):

<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> 

当运行MVN应用服务引擎: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> 
相关问题