0

我使用 JPA2 制作了一个 GAE 项目以进行数据库访问。我存储了一些超过 500 个字符的字符串,所以我使用 com.google.appengine.api.datastore.Text。

我有一个接口 Script.java,它将值定义为 String,还有一个 ScriptImpl.java,它内部有一个 Text 成员,并转换为获取和设置。

因为项目的一个要求是,它仍然可以在一个简单的tomcat上运行,后面有一个数据库。所以必须可以在google环境内外运行。

是否有一些现实的方法来实现我的应用程序,以便我可以切换到普通的 tomcat 环境(例如,通过 spring 配置来使用不同的 bean...)。

我还需要注意什么才能在这两种环境中进行这项工作,以及如何处理与 GAE 缝合的零件?

更新:到目前为止,我发现了以下关键问题:Google 用户服务和登录过程、域模型中的文本类、Wicket-GAE-Initializer(因为我使用 Wicket)

4

2 回答 2

2

GAE 有它自己的专有 API。如果您使用此 API 编写应用程序,那么如果您想离开 GAE,您有两种选择:

  1. 显然,重写你的代码。
  2. 使用实现 GAE API 但在其他平台上运行的 API 包装器。此类包装器的一个示例是AppScaleCapeDwarf。AppScale 更老,可能更成熟,同时支持 Java 和 Python。它还支持更多平台(私有服务器+云)。OTOH,CapeDwarf 针对 JBossAS7,因此如果您使用该服务器(或 OpenShift 云),它可能更适合。此外,我想您可以期待 RedHat 等成熟的开源领导者提供更好的支持。
于 2013-07-05T10:13:16.653 回答
1

虽然理论上可以包装 GAE 功能,然后将其委托给应用程序引擎或您的“正常”环境,但这可能需要付出很多努力。

可能另一种方法会更容易。你知道CapeDwarf吗?

JBoss CapeDwarf

在您自己的私有 JBoss Application Server (AS7) 集群或 RedHat 的 OpenShift 云上部署和运行您的 Java App Engine 应用程序。

JBoss CapeDwarf 是 Google App Engine API 的实现,它允许应用程序无需修改即可部署在 JBoss 应用程序服务器上。在幕后,CapeDwarf 使用现有的 JBoss API,例如 Infinispan、JGroups、PicketLink、HornetQ 等。

如果它真的需要“带有数据库的简单 tomcat”,那么了解更多信息或约束将很有帮助。

于 2013-07-04T19:42:42.207 回答