【问题标题】:How do I connect my Desktop Java Application to an Existing GAE Datastore?如何将我的桌面 Java 应用程序连接到现有的 GAE 数据存储?
【发布时间】:2013-06-16 17:55:38
【问题描述】:

目前,我在 Eclipse 中有一个非常基本的桌面 Java 应用程序,旨在将实体添加到 Google App Engine 上现有项目的数据存储区。我现在已经完成了所有设置,但由于我是使用 Google App Engine 的新手,所以我不知道如何让应用程序将实体发送到我现有项目的数据存储区中。

我尝试在网上查找此内容,但我发现的大部分内容都是用于制作 Java Web 应用程序。我的目标是让应用程序作为自己的应用程序运行,而不是通过浏览器。

那么,我必须做些什么才能使应用程序连接到我的 GAE 数据存储?是否有一些我需要输入的代码,或者我需要在项目中拥有一些 xml 文件?我只是在为 Google App Engine 使用 Java Eclipse 插件。

感谢您的帮助!

【问题讨论】:

  • 您想在 GAE 上部署整个应用程序还是只部署一些对象?
  • @AlvinArulselvan 我只想使用这个应用程序从数据存储区发送和检索一种数据。当前数据库在 iOS 应用程序中使用,此桌面应用程序旨在让我的非技术项目成员能够轻松添加新数据。
  • 你试过在Datastore上上传数据吗?这是Guestbook的Python版本...这是datatstore的通用外观...developers.google.com/appengine/docs/python/…Perosnally我只是使用Eclipse部署到GAE并运行它在线。然后将您的 DAO 对象放入数据存储中,如留言簿中所示
  • @AlvinArulselvan 到目前为止,我已将其全部设置为将实体上传到数据存储区。然而,问题是我从未指定我希望它上传数据到哪个项目的数据存储。由于这个原因,我没有尝试运行该应用程序。所以我的问题是如何指定我应该将实体上传到哪个项目的数据存储区

标签: java eclipse google-app-engine google-cloud-datastore entities


【解决方案1】:

对于将来遇到此问题的任何人,我得到了答案。我只是尝试尝试使用项目设置并找到它。事实证明,安装 GAE Eclipse 插件后,您只需右键单击 Package Explorer 中的项目文件夹,进入 Google 子菜单,然后单击 App Engine Settings...

从那里,您需要选中Use Google App Engine 复选框,然后在部署部分中,只需填写您项目的Application ID。您可以在项目的在线 Google 应用引擎仪表板的 Application Settings 选项卡下找到项目的应用程序 ID。它被列为您的Application Identifier

结果对我来说,我需要找到一个不同的解决方案,因为您无法将 GAE 与使用 Java Swing 库的桌面应用程序集成。无赖:/

【讨论】:

    【解决方案2】:

    根据您问题的语言,我认为您确实需要一个全局的答案,而不是任何特定的代码。因此:

    您有一个桌面应用程序。这在某些台式计算机上运行。

    您有一个 Google App Engine 应用程序及其数据存储。这在 Google 的数据中心运行。

    它们不是同一台计算机。因此,它们必须以某种方式通过网络进行通信——这就是您正在寻找的缺失部分。

    由于 GAE 是围绕 Web 应用程序设计的,我建议您将其视为“Web 服务”情况 — 即您的桌面应用程序向您的 GAE 应用程序发出 HTTP 请求。 (这种情况在一般 的情况下得到了简化,因为您同时编写了客户端和服务器。)

    我建议您阅读有关设计简单 Web 服务的内容,并做任何适合您的应用程序的事情。


    一个重要警告:除非您的 GAE 应用程序只有一个用户,否则您必须不要简单地编写一个桥接器,通过 HTTP 访问数据存储,因为这样任何人都可以任意更改其他人的数据。正如多人游戏设计所说:不要信任客户端——也就是说,只接受根据应用程序规则有意义的网络请求,不要指望客户端强制执行这些请求规则。这是因为任何人都可以使用桌面应用程序以外的东西向您的 GAE 应用程序发出请求,因此您必须假设您可以接收任意请求。这是互联网的基本性质。

    例如,在多用户应用程序的简单情况下,用户之间不使用应用程序进行交互,这意味着每个请求,例如更新记录,应该只更新记录属于登录用户,而不是任何其他用户。

    【讨论】:

    • 哇,感谢您提供的所有重要信息,我真的很感激!但是,我确实有一个问题。我是否需要使用 HTTP 请求与我的项目中的数据存储进行交互?我可以不使用 eclipse java 插件来做到这一点吗?如果可以,我该怎么做才能指定要将实体对象上传到哪个项目的数据存储区?
    • 不,您不需要使用 HTTP,但您需要在应用程序中使用某种网络协议,据我所知,HTTP 是 GAE 中最容易使用的协议。您当然可以使用 Java 库来构建 Web 服务(和客户端),而无需直接编写 HTTP 处理代码。但是“eclipse java 插件”,不管它是什么,都无关紧要——那是你用来帮助编写程序的东西,而不是你程序的一部分。
    • 对不起,如果我不清楚我的 cmets,但我指的是“eclipse java 插件”,我指的是 GAE 的官方 eclipse 库,所以我相信它会是该程序。如果你以前用过这个,我必须使用一些程序来指定我已经在 GAE 服务器上创建的 GAE 项目吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    相关资源
    最近更新 更多