線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2616
推到 Plurk!
推到 Facebook!

聽完 JavaTwo 孫三才講師演講完後關於 JSP Session 的一個疑問

尚未結案
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-12 10:02:23 IP:61.220.xxx.xxx 未訂閱
一般書上常教的做法是把變數暫存在 session 中以實作類似購物車功能,當然我也不例外採用此做法。 但孫講師的論點,因為要實作 Load Balancing & no cookie ,所以可能有很多 Web Container 在不同 PC,也就是說不可以用 session 來暫存資料了,而必須把暫時性的資料儲存在 Database or File 裡。(我大概描述孫講師的結論,希望大家懂我的意思) 結果我回家馬上作測試,把 Browser Cookie 安全性設成最高(表示禁用 Cookie),結果我的網站就不能正常使用了,因為我會在登入後的每一個 Page 去檢查 session 理登入身分和正確性,但 session 在轉到新頁面時已經不見了(JSP 無法從 User 端 Cookie 取出 session information...)。 這又延伸另一個問題,用 Tomcat Manager 觀察該 Web Server session count 會一值累增,日基月累下來想必會造成負擔,且易成為人家攻擊弱點(一值用禁用 cookei 的連線來 request,讓 Tomcat 負荷大增...)。 經過一番思索,我把我想像中的做法描述如下,不知道對不對,請各方先學不吝指教: 當 A.jsp 產生第一個新的 session 時,馬上將 session 『序列化』存入資料庫,而資料庫為兩個欄位(SessionID,SessionObj),導向 B.jsp (或爾後所有新的 Page)時設法在 B.jsp 藏一個隱藏欄位 SessionID 以方便再從資料庫中取出,B.jsp 需要用到 Session 時在依隱藏的 SessionID 為 Key 去資料庫中抓取出 SessionObj 來讀取或寫入,若有寫入則在存入 DB 一次,爾後皆如此辦理。 上述做法聽起來似乎很麻煩但相信寫成共用模組會好些。不知道我這樣的想法和做法是否正確呢? 謝謝! JackTasy
------
JackTasy
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-12 10:09:15 IP:218.170.xxx.xxx 未訂閱
你可以去 http://edu.uuu.com.tw/jspwidget/default.jsp 安裝jspwidget後也安裝他的範例程式 執行起來就可以研究了,在進階技巧->延展性的區段操作範例程式看看, 它使用了兩個方式並行,log in database and file,並且有設定session time out, 比較需要注意的是他的範例程式都是架構在他所設計的jspwidget上,不過也是有提供source可以參考. 我也在研究當中,歡迎在ktop上一起討論,你也可以在孫講師的留言版跟他請教也可以,他都會回答.
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-12 10:28:52 IP:61.220.xxx.xxx 未訂閱
謝謝 hahalin 這麼快就給我協助,K.TOP 高手如雲這也是我喜歡這裡的原因。 我會好好研究一番,再回來跟大家討論討論,再次說聲謝謝。 JackTasy
------
JackTasy
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-12 10:49:38 IP:218.170.xxx.xxx 未訂閱
您客氣了,在delphi的世界我只是個中手,在java的世界我也還只是個低手.    不過,java的使用需要有更穩固的物件導向基礎...    最近正在怨嘆基本功夫不夠...
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-12 11:03:59 IP:61.220.xxx.xxx 未訂閱
引言: 您客氣了,在delphi的世界我只是個中手,在java的世界我也還只是個低手. 不過,java的使用需要有更穩固的物件導向基礎... 最近正在怨嘆基本功夫不夠... < face="Verdana, Arial, Helvetica"> 呵呵 在 java 世界裡我也是個低低手,同時想兼顧 Delphi & Java 讓我有點吃力呢(不知 hahalin 是否也有同感) 抱歉稍微離題一下,領略了 java 物件導向後反而讓我開發 Delphi 思維不一樣了,我想這就是學兩種語言的其中一個好處吧。 以下提供我個人小小心得參考,用 java 物件導向觀念來撰碼,一定要先研究好 Collection & Pooling 觀念,搞懂了之後讓我在爾後很多複雜需求上都能應用自如呢,我甚至自己寫了 JSP Connection Pooling 。 ps:Collection 是指一些容器類別,如 Array,LinkList,HastMap,TreeMap,Set...等,我是看 Thinking In Java Chap 5 ,這真是一本好書啊 < >< > JackTasy
------
JackTasy
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-12 15:17:22 IP:218.170.xxx.xxx 未訂閱
引言: 我甚至自己寫了 JSP Connection Pooling 。 ps:Collection 是指一些容器類別,如 Array,LinkList,HastMap,TreeMap,Set...等,我是看 Thinking In Java Chap 5 ,這真是一本好書啊 < >< > JackTasy
< >< > 厲害厲害,不知道有沒有機會可以請你指點如何設計
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-12 15:57:14 IP:61.220.xxx.xxx 未訂閱
引言: < >< > 厲害厲害,不知道有沒有機會可以請你指點如何設計>< face="Verdana, Arial, Helvetica"> 好說好說,我找個時間整理一下再分享出來給大家參考參考。 真的有點離題嘍,孫講師的網站資源很多很豐富,研究完可能要花一段時間,且我尚不確定是否可找到我要的答案,還是希望大家能多多提供想法和做法一起討論討論。
------
JackTasy
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-12 18:06:27 IP:61.64.xxx.xxx 未訂閱
引言:
引言: < >< > 厲害厲害,不知道有沒有機會可以請你指點如何設計>< face="Verdana, Arial, Helvetica"> 好說好說,我找個時間整理一下再分享出來給大家參考參考。 真的有點離題嘍,孫講師的網站資源很多很豐富,研究完可能要花一段時間,且我尚不確定是否可找到我要的答案,還是希望大家能多多提供想法和做法一起討論討論。 >< face="Verdana, Arial, Helvetica"> 抱歉,插嘴一下. session是可以序列化存成硬碟的檔案,檔名就直接以session id為命名. 為了clustering,直接把你這些session物件放在共享磁碟機(目錄)中. 這樣.loading balance應該可以實作了吧. 為了怕曠日廢時,某些阿撒布魯的session檔,可以由系統的crown定期去砍檔就好了 關於這樣的實作,可以參考以前(四五年前吧)一個叫bluestone的ap server的loading balance架構.他的session是放在database的. 目前weblogic seseion是放在共享的記憶體中,所以速度會快很多.webspher的話,小弟就沒玩過. connection pool實作是常常有要配搭執行緒(觀察某些connection是否該真的close,或是安排例外處理),然而,pooling事小,交易事大. 這方面的實作,可以參考別的論壇: http://www.javaworld.com.tw/jute/post/view?bid=21&id=2627&tpg=1&ppg=1&sty=1&age=0#2627 一般的ap server都是會有自己的data source去maintain connection pool, Tomcat 4.1.x就有內建connection pool了,當然也有的是driver本身就有對jdbc3的支援才行,如postgreSQL driver的connection pool在tomcat中的配置如下: http://castor.exolab.org/pooling.html 當然,精實一點,你有機會實作的話,對於你日後的programming功力也不無小補. 希望對你的實驗有點幫助. (sorry,三四年沒有在寫web base的東西了,希望資料不會太舊) --------------------專案未完人-----------------------------------------
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-13 01:19:13 IP:211.76.xxx.xxx 未訂閱
引言: < >< > 厲害厲害,不知道有沒有機會可以請你指點如何設計>< face="Verdana, Arial, Helvetica"> http://delphi.ktop.com.tw/topic.php?TOPIC_ID=54701 拙作上傳嘍,希望有所幫助。 另外
------
JackTasy
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-25 21:09:26 IP:211.76.xxx.xxx 未訂閱
經過斷斷續續的嚐試,模擬 session 功能寫入 File 關鍵技術已經 try ok 了,現在努力再試試寫入 DB,不過不確定何時 ok,有結果的話在 post 上來跟大家分享,先把此問題結案吧,謝謝兩位大大的協助。 JackTasy
------
JackTasy
系統時間:2024-11-21 23:46:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!