2013-11-21 99 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> 
相關問題