2011-10-10 42 views
1

我已經創建了一個GWT應用程序,現在想要在GAE外部署它。我希望在GAE之外部署的原因是GAE的Sandbox安全功能,它不允許我將文件寫入我的系統。我將數據以本體(。owl文件)的形式存儲在我的'/ war/WEB_INF'下,我希望最終用戶能夠通過服務器修改(寫入/保存)此文件。將文件寫入我的GWT - Google App Engine(GAE)應用程序中的系統

我明白,GAE不會讓我做這件事,但有一個谷歌支付服務(例如谷歌應用程序),將允許託管GWT應用程序,這將允許將文件寫入到系統?例如,像GAE的附加組件?

如果沒有,你會推薦什麼解決方案來在網絡上託管一個GWT應用程序(這會讓我將文件寫入WEB-INF文件夾)?

編輯:我解決了這個問題,將GWT項目部署爲.war文件並託管在TomCat中。

回答

2

我很新的GAE,但如果你沒有看過他們的實驗寫入/讀取Blob存儲服務,您可以檢查出here。我相信他們有一個類似於python的API。它當然存儲在GAE blobstore中,而不是存放在/ war/WEB-INF /目錄下,但它確實爲你尋找的東西提供了可能的解決方案。

另外,如果你正在尋找(可能在EC2例如)運行自己的服務器,那麼你可能想看看AppScale。但是,我個人認爲,作爲一種解決方案,我會遠離這一點,因爲我非常懷疑AppScale的表現和谷歌的GAE網絡服務器一樣好,而且缺乏相同程度的支持/開發。

+0

我實際上使用blobstore Java API將文件存儲在數據庫中。你可以把一個基本的servlet映射到像/ fileServlet/*之類的東西,然後用路徑和文件名來調用它,你可以通過這些路徑和文件名來識別一個特定的blob(之前你用一些關聯的「路徑」和「文件名」保存的)它會像你自己的文件系統一樣行事。 –

+0

嗯,所以我實際上甚至不需要在WEB-INF下存儲數據(我的本體)呢?安全性方面,使用blobstore會比在我的文件系統下對本體進行分類的可信度低嗎? – Rhubarb

+0

嗯,我不確定這是否允許修改或覆蓋文件:'Blob創建後無法修改,儘管它們可以被刪除。「另外,我的本體大於32mb,但很明顯: 「應用程序可以使用API​​調用一次讀取Blobstore值,其大小可以達到API返回值的最大值。」 – Rhubarb

1

你是否排除了創建一個Owl實體來保存你的本體,並安排*.owl請求被處理,通過使用它作爲關鍵名來找到並提供相應的Owl?這是非常簡單的代碼。

+0

大衛您好,非常感謝您的回覆。這是我不知道的。你能否詳細說明/給出鏈接?我是一個web applcaitions新手。目前,我在服務器端保留我的本體(/ war/WEB-INF /)。我會在哪裏保持它在這個框架? – Rhubarb

+0

你需要的大部分內容在這裏:http://code.google.com/appengine/docs/java/datastore/ –

+0

大衛你好,我已經閱讀過這篇文章,但它最後說最大允許的「實體」大小爲1 MB,而我的本體是幾百MB的。你的意思是,只是將我的本體論的URL(在別處保持在線)存儲爲一個貓頭鷹實體的屬性,然後將該URL返回給我的本體論?因爲,我認爲將我的實際本體存儲爲數據存儲實體是不可能的。 – Rhubarb

0

GWT主要是客戶端技術。 GAE是一種服務器端技術。你似乎將GWT和GAE引擎混淆在一起。 GAE可以與幾乎任何客戶端技術一起工作,並且GWT可以連接到許多不同的後端平臺。

您是否試圖將後端代碼直接移至新平臺?您是否打算重新編寫新平臺的後端,但保留GWT代碼?這個應用程序的目標是什麼?被你和幾個朋友,或成千上萬的人使用?免費或付費客戶?從一個很小的共享VPS任何東西到你自己的Amazon EC2的雲迷你 -

如果你要搬出去,AppEngine上,你可以切換到幾乎任何你想要的java的託管服務。我不認爲谷歌提供通用的Java託管。我不知道你是如何構建你的應用程序的後端,但你可能使用過servlet,你應該可以在任何地方工作。

如果你想留在AppEngine上,你應該想想你是否能打破你的貓頭鷹文件轉換成可以存儲在數據庫中的實體較小的部分。

無論你選擇的平臺,如果你是在比少數人服務更多的規劃,你將需要一些方法來防止一個巨梟文件成爲一個巨大的瓶頸。

+0

彼得你好,非常感謝你的回覆。我的應用程序是一個研究項目,用於少於50人。它純粹在GWT中,我只是使用GWT RPC在客戶端和服務器端之間傳輸可串行對象。我最好喜歡使用GAE,因爲通過Eclipse GWT插件將應用程序部署到GAE非常簡單。但是,問題在於我說無法將文件寫入我的WEB-INF文件夾。我想我做的理想事情是打包我的應用程序(.war),然後將其託管在一個java託管服務上? – Rhubarb

相關問題