2013-02-12 108 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做)。

相關問題