【问题标题】:How to include external classes in a GAE deployment?如何在 GAE 部署中包含外部类?
【发布时间】:2011-02-15 17:59:24
【问题描述】:

我在使用 Eclipse 的谷歌插件,遇到以下问题:

项目 (A) 包含一个基于 GWT 的 GUI,它与运行在 GAE 上并使用 JPA 的服务器通信。 此外,还有一个项目 (B) 将旧数据迁移到新数据存储。 由于这两个项目都使用通用数据模型,所以我将一组接口和枚举提取到一个单独的项目(C)中,并设置其他两个项目对它的依赖。

Java App 项目 (B) 似乎可以工作,但 GWT/GAE 项目 (A) 只有在我手动将类复制到 WEB-INF/classes 目录时才有效。显然,这仅在使用托管模式时才有效。

有人知道如何在 Eclipse 中配置这样的多项目设置吗?

另外,我不确定多项目布局是否是最佳解决方案。通用模型对象集用于所有 3 个领域:

  • 用户客户端(GWT项目编译标准文件夹客户端和共享)
  • 服务器端(为 GWT-RPC、上传和不同的提要提供服务)
  • 迁移应用程序(将旧数据发布到上传 servlet)

有哪些架构选项可以将重复类的数量保持在最低限度?

【问题讨论】:

  • 感谢 Andrew,但遗憾的是没有解决我的问题。项目 B 很高兴从项目 C 中导入类。问题出在 Eclipse 中的 GAE 部署过程中,它总是进行干净的构建,因此删除了我从项目 C 中删除的额外类(我必须手动复制一些类/jars 也是一个问题,但至少它有效)。

标签: java google-app-engine gwt jpa gwt-rpc


【解决方案1】:

为了让您的 GAE 项目能够使用另一个 java 项目,首先您必须将第二个项目添加到第一个项目的构建路径中。这只解决了问题的一部分,允许您引用开发中需要的类。

另一个问题是,一旦您在开发模式下启动 GAE 项目,它将无法找到其他项目的类。你需要做的就是将项目导出为jar(名称无所谓,类可以编译或不编译),并将ir放在WEB-INF/lib文件夹中。您不需要将 jar 添加到构建路径,您可以继续使用项目引用,但请记住,每次在另一个项目中进行更改时,您都需要将其导出并用新的 jar 替换。我还没有找到更好的方法,但至少如果你使用这个文件夹而不是 WEB-INF/classes 它不会被 GAE 删除。

至于架构选项,我会将客户端和服务器放在一个项目中,这样可以简化开发。然后,您可以从迁移应用程序中引用该项目。我认为这样你会更容易维护你的主要项目而不会过多影响另一个(我认为迁移的生命周期会短得多,所以从长远来看它并不像另一个重要)。

【讨论】:

  • 客户端和服务器在一个项目中,并且在迁移项目中引用它会带来问题,因为来自 DataNucleus 的 GAE JPA 提供程序开始干扰 EclipseLink 之一(用于迁移项目)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多