在Google App Engine上開發系統(三) - 動手實作系統

姜志民 2016/03/21 13:00:00
156






主題

在Google App Engine上開發系統(三)-動手實作系統

介紹

此文章將介紹在Google App Engine(GAE)上如何撰寫系統,並使用JSP、Expression Language (EL)、JSP Standard Tag Library (JSTL)與 JavaBean 的組合來達成MVC架構。並以實作一個「影集推薦系統」來介紹在GAE開發系統的過程。


在下一篇文章將會介紹在GAE上,如何使用功能強大的Spring MVC Framework來更進一步改良上述的「影集推薦系統」架構。

作者

姜志民

版本

1.0

產出日期

2016 / 03/ 20



1 目的

此文章將介紹在Google App Engine(GAE)上如何撰寫系統,並使用JSP、Expression Language (EL)、JSP Standard Tag Library (JSTL)與 JavaBean 的組合來達成MVC架構。並以實作一個「影集推薦系統」來介紹在GAE開發系統的過程。


在下一篇文章將會介紹在GAE上,如何使用功能強大的Spring MVC Framework來更進一步改良上述的「影集推薦系統」架構。




2 Google Plugin for Eclipse安裝

Eclipse必須安裝Google Plugin for Eclipse,可參考之前發表的「使用GoogleAppEngine來監控系統是否異常」文章。




3 建立Web Application Project專案

A. 先在Google App Engine上建立Project,建立流程步驟可參考之前發表的「使用GoogleAppEngine來監控系統是否異常」文章。


B. 在eclipse中的專案必須選擇Google -> Web Application Project。







4 JSP Standard Tag Library (JSTL)設定與安裝

A. JSTL下載可以到此網址http://tomcat.apache.org/download-taglibs.cgi ,請下載下列的library。

Impl:taglibs-standard-impl-1.2.5.jar

Spec:taglibs-standard-spec-1.2.5.jar

EL:taglibs-standard-jstlel-1.2.5.jar

Compat:taglibs-standard-compat-1.2.5.jar


B. 將JSTL的libaray放置到war-> WEB-INF-> lib下,如下圖所示:


C. 在欲使用的JSP網頁上,貼上下列程式碼既可




5 啟用Sessions功能

A. Google App Engine是分散式架構,所以在分散式架構中每台伺服器要共享Sessions的話,Google的作法是將Sessions儲存到Google Cloud Datastore,這樣每台伺服器需要Sessions時,就會向Google Cloud Datastore查詢 。


B. 啟用方式: war -> WEB-INF -> appengine-web.xml ,在appengine-web.xml中,加入<sessions-enabled>true</sessions-enabled>。


C. 在App Engine管理後台,利用Datastore的查詢功能,可以看到kind為_ah_SESSION的Entity,這是共享Sessions的資料。




6 Source code

完整source code已上傳至Bitbucket ( https://bitbucket.org/min700313/demo )。建立Web Application Project時,會內建產生一些library,但因library檔案過大,不適合上傳至Bitbucket上,所以建議重新建立一個Web Application Project,再將需要的library複製過來。




7 系統效能調校

A. Google App Engine(GAE)提供設定系統所使用效能等級,每個等級都會消耗Instance配額,等級愈高消耗越快,詳細資料可以參考下列網址:

https://cloud.google.com/appengine/docs/java/modules/

https://cloud.google.com/appengine/docs/java/config/appconfig


B. 效能設定檔是放在war->WEB-INF->appengine-web.xml ,如下圖:



C. 目前此範例的效能等級是使用F1,使用的CPU是600 Mhz、Memory是128 MB,設定如下:






8 發佈程式碼到Google App Engine

A. 在專案名稱上按右鍵 -> Properties




B. Google -> App Engine,將ID填入Application ID內




C. 在專案名稱上按右鍵,Google -> Deploy to App Engine,將程式發佈到Google上






9 系統demo


https://system-1252.appspot.com/


帳號:thinkpower

密碼:thinkpower


系統網頁有使用到HTML5,為了操作正常建議使用最新的 Chrome 瀏覽器


為了減少Instance配額的消耗,所以系統效能等級是使用F1,所以系統回應會慢一點,在使用時請稍等一下!!

姜志民