开发服务器上的GAE模块

mar*_*vic 6 google-app-engine

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

小智 8

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

-Dcom.google.appengine.devappserver_module.{module_name}.port=8081
Run Code Online (Sandbox Code Playgroud)

我使用appengine-maven-plugin进行以下配置(我的定制模块称为"分析"):

<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>
Run Code Online (Sandbox Code Playgroud)

当我运行mvn appengine:devserver时,那个对应于该模块的日志是这样的:

[INFO] INFO: Started SelectChannelConnector@127.0.0.1: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
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.


mar*_*vic -2

尽管模块服务在这种情况下可能很有用,而且我相信它会起作用,但我以一种不同的方式解决了这个问题。

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

  • 这不是一个有用的答案,因为它推荐了一种与既定实践和谷歌自己的文档完全不同的方法。最好的答案是 nomukaiki,因为这正是 Google 官方示例应用程序的做法。 (2认同)