【问题标题】:Develop Java Swing application that can also run a Google App Engine? [closed]开发还可以运行 Google App Engine 的 Java Swing 应用程序? [关闭]
【发布时间】:2013-02-13 07:45:01
【问题描述】:

此时主要是集思广益,经过一些研究,无法真正找到关于这个主题的太多信息。

我正在设计一个 Swing 应用程序,它有一个用于存储的数据库后端,并且也使用本地文件系统来存储 BLOB。此应用程序不会占用 CPU、存储或 GUI 性能密集型,它只是用于电子项目管理的专用数据库应用程序。

我的理想目标是拥有一个无需任何更改即可在 JVM 和 GAE 中执行的代码库。我了解 App Engine Datastore 是非关系型的,所以我知道我不能将 SQLite 用于桌面应用程序。我必须使用 MongoDBHypertable 之类的东西。

此程序将在 GAE 上为一对多用户和一对多用户在本地运行。

编辑:添加了 CRUD 要求。

  • 创建或添加新项目、部件或 BLOB。
  • 读取、检索、搜索或查看现有项目、部件、原理图或任何类型的 BLOB。
  • 更新/克隆或编辑现有项目、部件等。
  • 删除/停用现有项目、部件等。

编辑 2:简而言之,我想知道这是否可能?如果您完成了可以在桌面或 App Engine 上执行的项目。我想知道您使用了哪些工具、框架、库;即使您必须使用完全自主研发的解决方案。

谢谢!

【问题讨论】:

  • 您需要说明您的应用程序需要执行什么样的 CRUD 和搜索操作。

标签: java swing google-app-engine architecture


【解决方案1】:

无法直接在 GAE 中托管未经修改的 Swing 应用程序。

您可以做的是让您的 Swing 应用程序与 servlet that is deployed to GAE 通信,并处理您的 Swing 应用程序和 GAE 数据库之间的通信。

在 swing 应用程序中,您将查询 servlet 以获取数据,而不是使用任何数据库。 GAE 托管的 servlet 处理请求、查询 GAE 数据库、对结果进行编码并将其流式传输回客户端。 Swing 应用程序接收响应并做出相应反应。在摇摆中,类似:

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://localhost:8080/YourApp/YourAction");

try {
    List<NameValuePair> params = new ArrayList<NameValuePair>(1);
    params.add(new BasicNameValuePair("name", name));
    post.setEntity(new UrlEncodedFormEntity(params));

    HttpResponse response = client.execute(post);

    HttpEntity entity = response.getEntity();
    // Server response as stream
    InputStream inputStream = entity.getContent();
} catch (ClientProtocolException cpe) {
    cpe.printStackTrace();
}

如果您走这条路,请记住始终在 event dispatch thread 之外发出您的服务器请求(使用 SwingWorkers 很容易做到)。

【讨论】:

    【解决方案2】:

    我认为你不能在 GAE 中使用 swing 组件,因为它不在白名单上 (https://developers.google.com/appengine/docs/java/jrewhitelist)

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 1970-01-01
      • 2010-12-02
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 2013-12-20
      相关资源
      最近更新 更多