最近抽空研究了一下新浪的SAE,光看特性確實很是吸引人,就是模仿GAE作的。對於中小開發者而言,按資源消耗付費,而且有極其強大的伸縮性,真的是一個絕佳平臺。理念很好,但用起來卻有點費勁,可能其Java功能還在公測中,不少東西不完善。java
文檔和社區mysql
新的平臺首先固然是看文檔和社區。其實文檔寫的還算詳細,對入門而言仍是能比較快接受,可是對技術細節說明很是少,不少地方用語也不嚴謹,好比說對java框架有限制,卻不說怎麼限制的,限制到什麼程度。社區這部分也只能說通常,活躍度比較低,提個問題半天沒人解答,官方人員也是挑着問題解答,有些問題直接就沒人管了。但bug反饋回覆比較及時,這點比較贊。web
Java應用測試spring
不本身動手天然不能有更深的理解,在作demo測試的時候花了將近一天時間,主要是由於官方文檔交代不詳細只能本身反覆測試,以及一個比較鬱悶的bug給耽誤了。簡單說一下幾點經驗:sql
1. 特別注意:發佈包不能有servlet-api-2.5.jar,web程序確定會用到這個,本地運行都是正常的,可是發佈到sae上有這個jar,程序就會報錯。數據庫
2. Java程序本地徹底是模擬,因爲和服務器上環境仍是有很多差別,因此一切只能以線上運行爲準,最好部署上去之後還能再跑一邊測試才靠譜。json
3. Web容器建議選用jetty7,由於sae上用的是這個。eclipse對應插件的下載地址是http://wiki.eclipse.org/Jetty_WTP_Plugin/Jetty_WTP_Installapi
4. 因爲sae是集羣環境,因此必須按集羣方式編寫代碼,須要多個容器共享的變量放到memcache或者數據庫中,固然這是屬於常識範疇。服務器
5. 本地開發環境數據庫用戶名和密碼不要使用SaeUserInfo.getAccessKey()和SaeUserInfo.getSecretKey(),在sea-local.jar中是返回一個隨機值,貌似mysql能夠設置一個any的用戶,可是這些本身弄太麻煩了,仍是最好把這個信息寫到配置文件裏面,發佈的時候進行修改。併發
6. sae文檔中說對框架有限制,根據測試應該是對某些框架的高級功能有限制,好比須要利用到反射、容器支持之類的高級特性,對於工具類的jar應該沒有限制。我用gson、ibatis、c3p0作簡單測試均可以正常運行。(注:鏈接池建議選用最新版本的dbcp,這個在同時鏈接讀庫和寫庫的時候比較穩定)
7. mini sae貌似就不是給Java測試用的,由於下載下來直接是個沒有解壓的war包...另外上面的數據庫還不知道用戶名對應密碼。
總結
sae這個東西理念和實用價值都是很大,可是目前文檔、示例、技術公開性都還不夠,但願這個平臺能快速發展,往後真正成爲一箇中小開發者的活躍地。
DEMO下載
附件是一個在sae上使用了spring2.5 + structs2 + ibatis2.3.4的demo,數據採用了json形式返回。本身在學習過程當中花了很多時間,爲了幫助你們節約sae中java開發的學習成本,並省去創建測試項目的繁瑣工做,因此特別把本身測試工程整理成demo併發布。祝你們使用愉快!若是發現該demo的問題,能夠用新浪微博(@畢成功passover)給我留言。