5

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

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

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

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

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

感谢您的任何想法。

4

2 回答 2

3

如果您按照此处的说明进行操作,这将在 Eclipse 中创建一个模块化的应用程序结构,而根本不使用 Maven。您将需要 Eclipse WTP 才能获得所需的项目类型(企业应用程序项目和动态 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"

"name" 的值是指 appengine-web.xml 中的 "module" 元素,而物理 Web 项目可以有任何名称。

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

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

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

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

于 2014-05-06T16:11:49.653 回答
2

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

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

我还发现了这个:

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

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

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

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

我知道您说您没有使用 Maven,但您可以考虑尝试一下吗?

于 2014-04-11T23:18:58.730 回答