从一个开发服务器提供多个GAE模块?

时间:2014-04-08 15:40:27

标签: java eclipse google-app-engine google-eclipse-plugin

我正在将一些后端转换为模块,并且在设置开发环境配置时感到困惑。我在Eclipse中使用Java而不是Maven。架构非常简单:

  • 前端模块是默认模块。基本的GAE / GWT应用程序。将项目放在任务队列上。
  • 后端模块处理任务队列。

使用旧的后端架构,一个调试配置将启动开发服务器,该服务器将为GWT DevMode UI 后端任务处理提供服务。

问题的关键在于DevMode的参数提供了-war命令行参数。现在我们不再有一个war文件(有一个包含两个war文件的耳朵),我们必须独立启动它们。这很好,我们可以创建一个启动前端和后端的启动组。

问题是每个war文件都有它自己的 WEB-INF / appengine-generated / local_db.bin,它实际上创建了两个独立的应用程序。我在这里错过了什么吗?我需要能够在处理新后端中的任务队列项的servlet中的前端RPC服务上放置一个断点,并让它们在一个调试会话中命中。

感谢您的任何想法。

2 个答案:

答案 0 :(得分:2)

如果您按照here的说明操作,这将在Eclipse中创建一个模块化的应用程序结构,而根本不使用Maven。您将需要Eclipse WTP以获得所需的项目类型(Enterprise Application Project和Dynamic Web Project)。

Eclipse项目结构应如下所示:

<<Enterprise Application Project>> ear-app
    |
    | (refers to)
    |
<<Dynamic Web Project>> app-module-1  "default"
<<Dynamic Web Project>> app-module-2  "any_name_2"
<<Dynamic Web Project>> app-module-3  "any_name_3"
<<Dynamic Web Project>> app-module-4  "any_name_4"

&#34; name&#34;的价值是指&#34;模块&#34; appengine-web.xml中的元素,而物理Web项目可以有任何名称。

请注意,您需要切换到J2EE透视图以使GPE WTP菜单选项可用,它们不会以标准Java透视图显示。

接下来,您需要将EAR项目链接到新的本地服务器实例(类型为&#34; Google App Engine&#34;)。

只有一个网络模块必须标记为&#34;默认&#34;在appengine-web.xml中。

将EAR部署到本地服务器后,数据存储位置位于默认 Web模块的WEB-INF / appengine-generated / local_db.bin中,并在Web模块之间共享

答案 1 :(得分:1)

我在解决如何在Google App Engine的MyEclipse插件中实现多个模块方面遇到了类似的问题。我发现的最好的信息只是说使用Maven。

&#34;虽然Java EE支持WAR文件,但模块配置仅使用解压缩的WAR目录。 App Engine的Java SDK包含一个Apache Maven工具,可以为您构建骨架EAR结构。&#34; (来源:https://developers.google.com/appengine/docs/java/modules/

我也发现了这个:

&#34; Maven项目的布局与Eclipse项目不同。因此,如果您希望在Eclipse中使用Maven项目,则需要做更多的工作。您有以下选择:

1]将App Engine的Maven项目作为Web Tools Platform(WTP)项目导入Eclipse,如导入现有Maven项目中所述。

2]使用适当的Maven集成插件(如m2eclipse)将Maven项目导入Eclipse。

3]设置两个调试配置,一个用于devserver中的Maven项目(mvn appengine:devserver),另一个用于远程Java应用程序,用于将Eclipse调试客户端连接到devserver jvm。有关如何执行此操作的详细信息,请参阅...&#34; (来源:https://developers.google.com/appengine/docs/java/tools/maven#creating_a_new_maven_app_engine_project_using_skeleton-archetype

我知道你说你不使用Maven,但你可以考虑尝试一下吗?