此时主要是头脑风暴,经过一些研究后,对这个话题的了解并不多。
我正在设计一个Swing应用程序,它具有用于存储的数据库后端,并使用本地文件系统来存储BLOB。这个应用程序不会是CPU,存储或GUI性能密集型,它只是一个专门用于电子项目管理的数据库应用程序。
我理想的目标是拥有一个可以在JVM和GAE中执行而无需任何更改的代码库。我知道App Engine数据存储区是非关系型的,所以我知道我不能将SQLite用于桌面应用程序。我必须使用类似MongoDB或Hypertable的内容。
此程序将在GAE上为1到多个用户和1到多个用户本地运行。
编辑:添加了CRUD要求。
编辑2:简而言之,我想知道这甚至可能吗?如果您已经完成了可以在桌面或App Engine上执行的项目。我想知道您使用的工具,框架和库;即使您必须使用完全自行开发的解决方案。
谢谢!
答案 0 :(得分:1)
无法直接在GAE中托管未经修改的挥杆应用程序。
你可以做的是让你的挥杆应用程序与servlet that is deployed to GAE对话,并处理你的挥杆应用程序和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)。
答案 1 :(得分:0)
我认为您无法在GAE中使用swing组件,因为它不在白名单中(https://developers.google.com/appengine/docs/java/jrewhitelist)