剛剛經過SAE高級開發者認證因而準備在sae 部署個人web應用php
應用使用了jfinal框架html
瞭解了一下 彷佛部署過程可能有一些問題java
百度一下也沒有太多的資料只好本身探索了mysql
第一個問題 503 - 鏈接池問題: git
首先直接把我用jfinal 寫的war 上傳上去發現直接 503了 web
啓動都失敗了這就沒什麼好說了進入日誌中心看了看jvm日誌sql
發現數據庫
register druid-driver mbean errorjava.security.AccessControlException
又百度了一下是druid 鏈接池的問題 sae不支持 jms 因此報錯了 而後改用了c3p0緩存
爲了防止其餘問題 我先用jfinal做者的官方例子來測試jfinal-democookie
上傳之後發現沒有創建數據庫 這個好辦去創建一下數據庫就行了
第二個問題 500:
java.lang.StringIndexOutOfBoundsException: String index out of range:
而後我覺得應該就行了,想不到又出現了一個問題 啓動是成功了
可是直接就500了出現了一個咱們熟悉的異
StringIndexOutOfBoundsException 定位代碼到 at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:68)
這個問題百度了一下別人也遇到過 參考了這裏 http://www.kankanews.com/ICkengine/archives/46488.shtml
這裏修改 JFinalFilter源碼須要註釋掉6七、68行代碼,就沒有問題了
其餘問題 jms
仍是第一個問題 用了c3p0 好像也會調用一下 jms 而後失敗了
不過服務是啓動了沒有像druid 當即中止 因而我又試了一下 dbcp
加入 common-dbcp.jar,common-pool.jar,common-collections.jar 3個包
記得 dataSource傳入 RecordPlugin
正常啓動 可是常常500 可能看來dbcp 也不太行 有換回了C3P0
其餘問題 jar衝突
若是有servlet。jar 會衝突去掉就好
jetty-service.jar也同樣
正式開始
測試 demo 部署好了 而後開始部署個人應用
話很少說直接打包上傳等待中40M有點大傳了半天
上傳完畢 訪問——》跳轉登陸頁面 -》500
觀察一下 日誌
java.lang.IllegalStateException: can not invoke native method public native long com.sun.management.UnixOperatingSyst em.getTotalPhysicalMemorySize() com.sina.sae.security.SaeSecurityManager.checkPermission(SaeSecurityManager.java:363)
發現系統監控 javamelody 的權限被攔截了 沒辦法先去掉
而後再上傳又出現了一個問題
path must start with /jfinalauthority com.sina.sae.facade.SaeHttpServletResponse.addCookie
研究後發現 cookie必需 添加應用名爲 path 個人應用加上 /jfinalauthority
可是發現加入以後 能夠添加cookie了 可是獲取不到。。
這個問題暫時沒有頭緒 先不用cookie 誰知道解決方案可告訴我
而後上傳 終於能夠用了
session
而後登陸之後發現我再訪問主頁 又須要登陸 我用的是shiro
shiro 會把session 保存在內存中 而每次訪問的機器可能不一樣了
因此咱們要改寫一下 shiro的sessionDao
能夠參考這篇文章 http://cloudbbs.org/forum.php?mod=viewthread&tid=12905
咱們用jfinal 要改寫shrio.ini 裏面的sessionDao 類就行
同時內存緩存用起來也沒有什麼用處了
直接使用 memcache
鏈接超時
測試的時候發現
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
仔細一看 鏈接超時了 這是怎麼回事吶應該不是設置問題 後來換了一下mysq 驅動jar就行了
版本爲 mysql-connector-java-5.0.8-bin.jar
後續:
應用放上去一夜 起來一看又掛了 這裏跟sae的機制有關應用 一段時間沒人訪問jvm自動關閉了
能夠在設置中 關閉 jvm的自動關閉
後續2:
又發現一個問題 memcache 須要基於請求的時候init
而不能在應用init的時候init 這就比較。
終於完事了
好了大功告成Jfinal框架 sae 正式部署完畢
歡迎你們訪問 http://jfinalauthority.sinaapp.com/
同時這也是本人最新的開源項目源碼地址 :http://git.oschina.net/jayqqaa12/JFinal_Authority
有bug請聯繫我
登陸賬號: user 密碼 231566qq
最後 :
要不是免費 鬼才用sae這玩意