如何将桌面Java应用程序连接到现有的GAE数据存储?

如何将桌面Java应用程序连接到现有的GAE数据存储?,java,eclipse,google-app-engine,google-cloud-datastore,entities,Java,Eclipse,Google App Engine,Google Cloud Datastore,Entities,目前,我在Eclipse中有一个非常基本的桌面Java应用程序,用于将实体添加到Google App Engine上现有项目的数据存储中。我现在已经全部安装好了,但是由于我是一个刚接触谷歌应用程序引擎的人,我不知道如何让应用程序将实体发送到我现有项目的数据存储中 我试着在网上查找,但我发现的大部分内容都是用于制作java web应用程序的。我的目标是让应用程序作为自己的应用程序运行,而不是通过浏览器 那么,我必须做什么才能使应用程序连接到我的GAE数据存储?是否需要键入一些代码,或者需要在项目中

目前,我在Eclipse中有一个非常基本的桌面Java应用程序,用于将实体添加到Google App Engine上现有项目的数据存储中。我现在已经全部安装好了,但是由于我是一个刚接触谷歌应用程序引擎的人,我不知道如何让应用程序将实体发送到我现有项目的数据存储中

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

那么,我必须做什么才能使应用程序连接到我的GAE数据存储?是否需要键入一些代码,或者需要在项目中包含一些xml文件?我只是在使用谷歌应用程序引擎的JavaEclipse插件


谢谢你的帮助

根据你问题的语言,我认为你真的需要一个大局性的答案,而不是任何特定的代码。因此:

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

您有一个带有数据存储的Google应用程序引擎应用程序。这在谷歌的数据中心运行

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

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

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


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


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

对于将来遇到此问题的任何人,我得到了答案。我只是尝试了一下项目设置,发现了它。因此,在安装了GAE Eclipse插件之后,您可以右键单击
包资源管理器中的项目文件夹
,进入
谷歌
子菜单,然后单击
应用引擎设置…

从这里开始,您需要选中
使用Google App Engine
复选框,然后在部署部分,只需填写项目的
应用程序ID
。项目的应用程序ID可以在项目的在线Google app engine仪表板的
应用程序设置
选项卡下找到。它列在那里作为您的
应用程序标识符


事实证明,对于我来说,我需要找到一个不同的解决方案,因为您无法将GAE与使用JavaSwing库的桌面应用程序集成。Bummer:///p>您想在GAE上部署整个应用程序还是只部署一些对象?@AlvinArulselvan我只想使用此应用程序从数据存储中发送和检索一种类型的数据。当前数据库正在iOS应用程序中使用,此桌面应用程序旨在让我的非技术项目成员能够轻松添加新数据。您是否尝试在数据存储上上载数据?这是Guestbook的Python版本…它是datatstore的通用outlook。。。实际上,我只是使用Eclipse部署到GAE并在线运行它Guestbook@AlvinArulselvan到目前为止,我已经做好了将实体上传到数据存储的所有设置。但问题是,我从未指定要将数据上传到哪个项目的数据存储库。由于这个原因,我没有尝试运行该应用程序。所以我的问题是,我如何指定我应该将实体上传到哪个项目的数据存储?哇,感谢所有的好信息,我真的很感激!不过,我有一个问题。我是否需要使用HTTP请求与项目上的数据存储进行交互?我可以不使用EclipseJava插件来做到这一点吗?如果可以,我可以做什么来指定要将实体对象上载到哪个项目的数据存储?不,您不需要使用HTTP,但需要在应用程序中使用某种网络协议,据我所知,HTTP是GAE中最容易使用的协议。当然,您可以使用Java库构建web服务(和客户机),而无需直接编写HTTP处理代码。但是“EclipseJava插件”,不管它是什么,都是不相关的——这是你用来帮助编写程序的东西,而不是程序的一部分。如果我在评论中不清楚的话,很抱歉,我指的是“EclipseJava插件”,它是GAE的官方eclipse库,所以我相信它将是程序的一部分。如果您以前使用过这个,是否有一些过程我必须用来指定我已经在GAE服务器上创建的GAE项目?