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

Java 从一台开发服务器为多个GAE模块提供服务?,java,eclipse,google-app-engine,google-eclipse-plugin,Java,Eclipse,Google App Engine,Google Eclipse Plugin,我正在将一些后端转换为模块,对设置开发环境配置感到困惑。我在Eclipse中使用Java,但不是Maven。架构非常简单: 前端模块是默认的。基本GAE/GWT应用程序。将项目放入任务队列 后端模块处理任务队列 对于旧的后端架构,一个调试配置将启动开发服务器,该服务器将为GWT DevMode UI和后端任务处理提供服务 问题的关键在于DevMode的参数提供了-war命令行参数。现在我们不再有一个war文件(有一个ear包含两个war文件),我们必须独立地启动它们。这很好,我们可以创建一个

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

  • 前端模块是默认的。基本GAE/GWT应用程序。将项目放入任务队列
  • 后端模块处理任务队列
对于旧的后端架构,一个调试配置将启动开发服务器,该服务器将为GWT DevMode UI和后端任务处理提供服务

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

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


谢谢你的建议。

我在为Google App Engine实现MyEclipse插件时遇到了类似的问题。我找到的最好的信息就是使用Maven

“尽管Java EE支持WAR文件,但模块配置仅使用未打包的WAR目录。App Engine的Java SDK包括一个Apache Maven工具,可以为您构建骨架EAR结构。”(来源:)

我还发现:

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

1] 将AppEngine的Maven项目作为Web工具平台(WTP)项目导入Eclipse,如导入现有Maven项目中所述

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

3] 设置两个调试配置,一个用于devserver中的Maven项目(mvn appengine:devserver),另一个用于远程Java应用程序,用于将Eclipse调试客户端连接到devserver jvm。有关如何执行此操作的详细信息,请参阅…(来源:)


<> P>我知道你说你没有使用Maven,但是你可以考虑尝试吗?

< P>如果你按照说明,这将在Eclipse中创建一个模块化的应用程序结构,而根本不使用Maven。您需要EclipseWTP才能获得所需的项目类型(企业应用程序项目和动态Web项目)

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"
ear应用程序
|
|(指)
|
app-module-1“默认”
app-module-2“任何名称”
app-module-3“任何名称”
app-module-4“任何名称”
“name”的值是指appengine-web.xml中的“module”元素,而物理web项目可以有任何名称

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

接下来,您需要将EAR项目链接到一个新的本地服务器实例(类型为“GoogleAppEngine”)

在appengine-web.xml中,只有一个web模块必须标记为“默认”


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

我搜索了“Google appengine adding modules wihout maven”,发现这条评论似乎很有希望。谢谢。我以前没有使用过Maven,我很诚实地尝试了一下(使用M2E导入由google原型创建的项目)。我决定尝试在没有它的情况下继续前进,原因如下:1)我仍然怀疑我的问题(调试两个服务器端模块)还有吗2)Eclipse中示例应用程序的性能让我担心扩展性,3)原型生成的项目结构与我当前工作区的项目结构如此不同,因此迁移将是一项重大的工作。因此,我需要寻找一个中间地带。更清楚的是,我可以在没有Maven的情况下添加模块,并将工作版本部署到Google基础设施上。我的具体问题是让两个模块在我的开发环境中共享同一个本地_db.bin。如果有人能确认使用Maven/M2E将允许多个模块共享一个本地_db.bin,我将进一步推动这条路径。阿奎隆,祝贺你至少达到了这一点。没有Maven,我找不到创建多个模块的说明。但是,如果我达到你的程度,我将不得不解决同样的问题:我希望我的模块共享一个数据存储。如果你能让我了解多个模块的最新情况,我很乐意帮助解决单个数据存储的问题。Aquilon,我一整天都在阅读谷歌应用程序引擎文档,现在我非常确定模块应该能够共享相同的数据存储。我要接受这一点——我还没有完全确认这一点,因为我为我庞大的应用程序集找到了一个解决方案。这(或maven原型)绝对是一个绿色领域场景的发展方向。谢谢大家!如何为第二个模块指定端口号?第一个可以在pom.xml中配置,但我看不到为第二个模块设置它的方法。Gapipro,您不能在开发服务器中指定其他模块的端口号。这似乎是谷歌人为的限制。对于测试,我帮助自己为要测试的API重定向iptables端口(每次重新启动dev服务器时)。很麻烦,但这样我就不需要重新配置Android应用程序(或任何其他客户端)