JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Application Server » GAE  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
己加入精華區
by koji at 2010-01-06 09:51
本主題所含的標籤
作者 GAE for Java 心得分享 [精華]
mylee





發文: 764
積分: 1
於 2010-01-01 10:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
在貼心得之前,想先請問站長能不能開個 Google App Engine for Java 專門討論版或子版?

回歸正題

前幾天開始把一個非 hello world 的 AP 移植到 GAE,就遇到一些不是 google tutorial 能解決的問題,有些自己找到答案,有些參考網上前人的經驗,分享一些給準備要開始用 GAE 來做正事的人,可以少走一點冤枉路。

.安裝 eclipse 3.4 + app engine plug-in 是最方便的選擇,這不用多說了。

.先搞清楚哪些 API 不能用。或者應該正面表列,搞清楚目前哪些能用。
眾所周知,Google 有公布在沙箱中能用的 API,也就是JRE 類別白名單。
[JRE 類別白名單]
http://code.google.com/intl/zh-TW/appengine/docs/java/jrewhitelist.html

.但對開發專案而言,這還不夠,還要知道哪些常見的 framework 的哪些版本能符沙箱限制,才可以順利使用。挑選開發的 framework 時,才不會走錯路。
[Will it play in App Engine] (似乎有陣子沒更新了,但還是很值得參考)
http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine

.上文的小細節要特別注意,我很早就看到 stuts_1 能用,而我最常用的富人的臉 richfaces 3.x 還不能用(官方說 4.0 要針對 GAE 修改為可用),所以就決定用 struts 1.2 和 spring 2.0.8 給它下去開發,結果遇到了 File upload 的鐵板(還是一開始可以,後來 eclipse app engine plugin 某天(就是今天,詳見後述)自動更新成功,才發現被擋了,目前剛開始要解決這個問題,還去發文到 app engine group 去問,不知道會不會被 moderator 罵不會先找舊文章?發完等審核的過程中沒事可做(因為我第一個子系統就是要上載檔案,卡在這裡,沒資料也不方便往下開發測測)去找資料才發現,上面那篇文章裡面有一小段話(雖然是在講 Stripes 但對 struts FormFile 也一樣)有提到這點,事先沒仔細看完,還花時間貼文去問,不過,說不定會有人直接回 patch URL,那就沒白費了。

. to JPA or to JDO? It's a problem. 我個人查了一些資料的評估,覺得是用 JDO 比較好,不過這個見仁見智,因為說不定有人的專案要維持 GAE 與 非GAE 同一份 code,而個人或公司政策是以 JPA 為主,所以選 JPA 對它是比較好選擇,這當然得尊重。我只講一下我選 JDO 的原因:我查到 google 目前用的 JDO/JPA 實作 (datanecleus) 的一名前員工的評論,他說 datanecleus JDO, JPA 兩個實作都有,他認為他有資格針對 datanecleus 及兩個 standard 來評論說 JDO 比較成熟(兩者的版本號碼某種程度也反應此點),用途也比較廣泛,JPA 針對 RDBMS,JDO 則包含但不限於 RDBMS,而大家都知道 Google 用 BigTable,本質就不是 RDBMS,若不想要用 datastore 低階API ,看看 google 自己的入門指南(http://code.google.com/intl/zh-TW/appengine/docs/java/gettingstarted/)都用 JDO 做範例,我當然拿香跟著拜,於是就選用 JDO。

2011/1/9 補充:當真正下去用 GAE/J,就會發現在 GAE/J 用 JDO/JPA 就像綁著兩隻腳游泳(如果你不會游泳,可能無法體會這個比喻),因此不少人會試著使用 low level datastore api 或是一些 datastore api 包裝得比較容易使用的框架,如 Slim3, Objectify, Twig 等。

.Eclipse GAE 專案並非 Dynamic Web Application。當 google app engine plugin 幫你建立一個專案,它的目錄看起就和傳統的 web app 不一樣,所以後遺症之一是那些在 WEB-INF/lib 之內的 jar 並不會自動成為 build path 的一環,於是我用加入 build path 的方式,把相關的 jar 加入了 Referenced Libraries (從 package explorer 看到的 pseudo foler 名稱)讓程式能編譯。問題就來了,這樣做之後,Eclipse 每天第一次開機啟動時,似乎會發生 GAE plugin 自動更新失敗,當時我並不清楚此點,只知道 datanecleus 相關的 jar 有些遺失了,導致編譯失敗,我從備份中找出缺少的 jar,把它放進去 lib 再加入 Referenced libraries,又可以編譯了。結果今天(2010/1/1)把自動更新的錯誤訊息仔細看了一下,猜測應該是我把一些 GAE jar 檔放進 Referenced libraries,雖然硬碟上 WEB-INF/lib 中確實有那些檔,但因為 eclipse 中的 lib folder 看不到那些檔,就報刪除失敗,導致更新失敗(其實某種程度它讓我一開始可以一直測試上載檔案,若是更新成功就會出 exception 了,見上文),後來就把 google 提供的 jar 從 Referenced libraries 刪掉,移回 WEB-INF/lib下,就能自動更新,然後也導致 struts (沒有 patch 以前)再也不能使用 FormFile 了。

才工作幾天,心得說多不多,找時間再寫 Spring JdoTemplate 的使用問題,先寫到這裡,抛磚引玉,如果有本站網友也在開發 GAE 的 webapp,也請您一起來討論,集思廣益。


mylee edited on 2011-01-09 20:55
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
9204 [精華] GAE for Java 心得分享 mylee 2688 2010-01-01 10:57
7993 Re:GAE for Java 心得分享 worookie 5 2010-01-01 12:29
7930 Re:GAE for Java 心得分享 mylee 1190 2010-01-01 18:19
7887 Re:GAE for Java 心得分享 alex2918 11 2010-01-01 22:08
7837 Re:GAE for Java 心得分享 mylee 1168 2010-01-02 11:08
7797 Re:GAE for Java 心得分享 mylee 942 2010-01-05 13:44
7639 Re:GAE for Java 心得分享 mylee 1097 2010-01-13 11:38
7625 Re:GAE for Java 心得分享 mylee 376 2010-01-13 11:58
7547 Re:GAE for Java 心得分享 mylee 1045 2010-01-14 11:44
7591 Re:GAE for Java 心得分享 jini 327 2010-01-14 11:57
7771 Re:GAE for Java 心得分享 mylee 418 2010-01-14 12:10
7589 Re:GAE for Java 心得分享 mylee 893 2010-01-16 11:29
7238 Re:GAE for Java 心得分享 mylee 885 2010-03-31 12:49
7186 Re:GAE for Java 心得分享 mylee 785 2010-03-31 16:00
7153 Re:GAE for Java 心得分享 mylee 1186 2010-03-31 22:17
7118 Re:GAE for Java 心得分享 hsuanMAX 34 2010-04-01 17:55
7161 Re:GAE for Java 心得分享 mylee 610 2010-04-01 18:17
7429 Re:GAE for Java 心得分享 mylee 1382 2010-04-02 18:27
7501 Re:GAE for Java 心得分享 mylee 432 2010-04-03 21:52
6420 Re:GAE for Java 心得分享 funy 34 2010-12-25 16:32
5675 Re:GAE for Java 心得分享 tti 28 2011-05-27 15:19
5474 Re:GAE for Java 心得分享 tti 556 2011-06-08 14:48
5510 Re:GAE for Java 心得分享 mylee 730 2011-06-08 16:04
5445 Re:GAE for Java 心得分享 tti 249 2011-06-08 23:20
5449 Re:GAE for Java 心得分享 mylee 817 2011-06-09 07:29
5850 Re:GAE for Java 心得分享 tti 753 2011-06-09 10:43
» JWorld@TW »  Application Server » GAE

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8