【问题标题】:How to create a application that works both on Google App Engine and Local tomcat server?如何创建适用于 Google App Engine 和本地 tomcat 服务器的应用程序?
【发布时间】:2012-12-15 00:17:28
【问题描述】:

我正在创建一个基于 java 的应用程序,并且我想使用 google 应用程序引擎进行部署。但我希望这个应用程序可以移动到我本地或其他机器上的其他服务器,如 tomcat 等。所以我虽然想使用谷歌应用引擎。但是想让我的应用程序独立于任何谷歌特定的东西。有人可以总结一下我必须注意的要点。我想保持它独立于应用程序和数据库层的角度。

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    虽然我不是谷歌应用引擎的大师,但是让你的 webapp 可移植的经验法则是使用标准规范 API 而不是供应商特定的 API。例如,如果您的应用正在使用谷歌应用引擎 UserServive (com.google.appengine.api.users.UserService) 或数据存储 com.google.appengine.api.datastore.DatastoreService ,如果与谷歌应用引擎紧密绑定并且不能迁移到独立的tomcat引擎。 要松散耦合您的数据库以进行进一步迁移,您应该考虑在谷歌应用引擎中使用 MySQl 模式。因为将来您可以通过转储在任何地方托管您的数据库。此外,您应该使用 JDBC apis/JPA 在您的应用程序中使用 MySQL JDBC JAR 进行数据库操作

    总而言之,您应该避免任何在您的源代码中导入了 com.google.appengine* 的 API 调用。此外,您应该在 Google 应用引擎云中运行自己的 mysql 架构。

    【讨论】:

    • Ajay 是免费使用的 Google Cloud SQL,因为我只是在试验它。
    • developers.google.com/cloud-sql/docs/billing下方查看google cloud sql的定价方案
    • 我不想真正使用付费计划,你能建议我如何以最小的耦合使用谷歌数据存储。可能仅限于一个简单的配置文件,所以当我移动到本地时,我只需更改该文件并全部设置好?我对 JPA 了解不多。
    • Sushil,如果您想使用数据存储,那么您肯定会有非常紧密的耦合。此外,Datastore 附带有限的免费配额developers.google.com/appengine/docs/quotas#Datastore,之后您必须采取计费计划。建议根据您的要求使用 mysql 的专用架构托管。
    • Ajay 目前我只是在评估 Google App Engine 是否应该这样做,开发示例应用程序作为学生的作业,我们以后可能会考虑扩展它们。由于你提到谷歌不能使用 JPA,所以当我想独立时,JPA 被配置为稍后更改数据库映射?
    【解决方案2】:

    我认为你可以,这只是设计问题。 举个例子:如果你的应用需要用户认证,你可以创建一个接口AuthenticationService和两个实现:

    • GAEAuthenticationService 用于 Google App Engine
    • FakeAuthenticationService 用于使用 jetty 运行的本地测试(例如)
    • DataSourceAuthenticationService 用于基于 DataSource 的身份验证

    您可以对持久性、调度程序等进行同样的思考……唯一要做的就是:

    定义您需要的对象并在您需要依赖于平台的不同实现时使用接口

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-14
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多