2013-02-12 88 views
-2

在这一点和经过一些研究之后,主要集思广益并没有真正发现这个主题。开发也可运行Google App Engine的Java Swing应用程序?

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

我的理想目标是让一个代码库可以在JVM和GAE中执行而不会有任何改变。我了解App Engine数据存储是非关系型的,所以我知道我不能使用SQLite作为桌面应用程序。我得去用MongoDBHypertable之类的东西。

这个程序可以在GAE本地运行1到多个用户和1到很多用户。

编辑:添加CRUD要求。

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

编辑2:概括地说,我不知道这是甚至可能?如果您已经完成了可以在桌面或App Engine上执行的项目。我想知道你使用的是什么工具,框架,库,即使你必须使用完全自主开发的解决方案。

谢谢!

+0

您需要说明应用程序需要执行哪种CRUD和搜索操作。 – 2013-02-12 21:06:41

回答

1

这是不可能直接在GAE举办未修改的Swing应用程序。

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

在swing应用程序中,而不是使用任何数据库,您将查询servlet中的数据。 GAE托管的servlet处理请求,查询GAE数据库,对结果进行编码并将其返回给客户端。挥杆应用程序收到响应并做出相应反应。在摇摆,像:

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做)。

相关问题