java web sae平臺開發遇到的問題

java編譯器版本問題

java版本要求是java6,太高的版本會報錯。這個可以在eclipse裏面設置編譯器版本。

war包問題

war包必須和應用同名。servlet-api.jar, mysql.jar這些公用的jar文件不要上傳,以免版本衝突。(本人在開發中把所有jar包從war文件中刪除)

contextPath問題

因爲這個問題影響cookie和session所以比較重要。

通過二級域名訪問後獲取的getContextPath(),永遠是/version/appname的固定值,與請求的URL無關。

getRequestURI()獲取的結果不包含appname,所以URI不包含contextPath這個一般的web容器不一樣。

cookie問題

cookie路徑必須/appname開頭,這是爲了安全考慮,所以以後訪問的url也要帶上下文路徑。

session問題

分佈式session需要加<distributable/>標籤。 SAE session經常會丟失,我後來自己又用memcache保存了一次以減少丟失機率。

另外session是基於cookie實現的,如果有保存不了很可能也是路徑問題。

mysql問題

mysql鏈接10s超時。我是自己DIY的線程池,所以使用前要檢查連接是否超時就好了。使用其他線程池時一定要注意。

storage問題

storage問題,wrap的file系列接口,每次上傳的文件都錯誤。可能時文件太大了,分多次寫入流的緣故。先存儲到臨時文件,再用storage接口上傳可以解決。

log問題

開始時我找不到系統log查看的地方。系統打印的日誌在HTTP日誌,notice和warning中。

memcache

memcache基於請求初始化

Font字體問題

Font的幾個邏輯字體都找不到,後來沒辦法找了一個字體文件打包到war包裏面了。

getServletContext問題

這個方法會報錯,no such method,後來只能用ClassLoader來讀取配置文件了。

代碼更新問題

代碼更新後需要手動重啓jvm,要不然有時候靜態變量沒有更新。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章