Sky's blog

          我和我追逐的夢

          常用鏈接

          統(tǒng)計(jì)

          其他鏈接

          友情鏈接

          最新評(píng)論

          resin的session id reuse特性(3)--總結(jié)

              從對(duì)resin源碼的追蹤到resin配置文件中的設(shè)置,可以明確的看到,resin在設(shè)計(jì)上是提供了session id 的reuse功能,而且resin.conf默認(rèn)就是打開reuse的。慚愧的是,我一直不知道......

              事情要從前段時(shí)間的工作談起,我被要求設(shè)計(jì)出一套合適的方案來解決目前公司現(xiàn)有的幾個(gè)前臺(tái)模塊各自為政的問題。其中最核心的兩個(gè)就是多機(jī)負(fù)載分擔(dān)和統(tǒng)一認(rèn)證功能。目前公司產(chǎn)品中多機(jī)負(fù)載有兩種方式: 1. 純r(jià)esin,放棄了對(duì)HttpSession和本地資源的使用 2. apache + resin,需要傳遞所有需要用到的參數(shù),因?yàn)槁闊┧懈纱嘀挥幸粋€(gè)單一入口,因?yàn)槭褂昧薍ttpSession,因此雖然頁面跳轉(zhuǎn)進(jìn)來了,但是由于沒有原來的jsessionid無法利用上一次進(jìn)入該模塊時(shí)的session,造成要重新創(chuàng)建新的session,非常的吐血。

              之后針對(duì)apache + resin的多機(jī)分布方案進(jìn)行了調(diào)研,隨即發(fā)現(xiàn)這個(gè)方案的核心就在于jsessionid參數(shù)的傳遞。在研究jsessionid傳遞的時(shí)候無意中發(fā)現(xiàn)使用cookie傳遞jsessionid到另外一個(gè)webapp,這個(gè)webapp新生成的HttpSession的id(就也是jsessionid),居然和傳遞過來的上一個(gè)webapp的jsessionid相同!

              驚喜萬分啊,依照這個(gè)特性,完全可以在各個(gè)webapp之間只傳遞jsessionid這一個(gè)參數(shù)。負(fù)責(zé)登錄的"主webapp"在HttpSession中保存用戶資料,所有其他webapp都可以使用jsessionid作為標(biāo)志到"主webapp"來獲取這些用戶資料,只要"主webapp"提供一個(gè)簡單的接口即可。隨后編碼測試了一下,發(fā)現(xiàn)這個(gè)方案非常好的解決了我目前的問題,簡直完美了: apache + resin多機(jī)分布,多webapp之間頁面任意跳轉(zhuǎn),簡單到只要攜帶一個(gè)jsessionid(這個(gè)還可以放cookie)就可以跨webapp四處亂跑。

              隨即編碼測試了一遍,驗(yàn)證這個(gè)方法的的確可行。稍后我再將這個(gè)方案的詳細(xì)情況整理出來分享給大家。

              這個(gè)方案基石,就是jsessionid的傳遞和jsessionid的重用。在這次方案探索之前,我對(duì)jsessionid重用完全沒有概念,也根本不知道resin已經(jīng)有對(duì)這個(gè)特性的支持。一路摸索過來,幾經(jīng)周折,最后發(fā)現(xiàn)原來resin早就準(zhǔn)備好了現(xiàn)成的解決方案,為類似我這種多webapp的系統(tǒng)提供session id reuse的支持。

              想起了這句詞:“眾里尋她前百度,驀然回首,那人卻在燈火闌珊處”。呵呵,頗有感覺。

              后記: 看來對(duì)resin的了解還是不夠深入啊,否則如果之前對(duì)session id reuse有了解的話,應(yīng)該可以直接就想到這個(gè)方案了。這次能誤打誤撞的發(fā)現(xiàn),運(yùn)氣著實(shí)不錯(cuò)。另外似乎tomcat好象不提供類似的特性支持,稍后再繼續(xù)研究。

          posted on 2007-12-28 16:28 sky ao 閱讀(1760) 評(píng)論(4)  編輯  收藏 所屬分類: web

          評(píng)論

          # re: resin的session id reuse特性(3)--總結(jié) 2007-12-28 18:32 lizongbo


          手工加行代碼或者配置配置文件,實(shí)現(xiàn)把sessionid的cookie的作用域設(shè)為頂級(jí)域名,path設(shè)置為"/"根目錄的效果應(yīng)該就可以了啊。

          Tomcat是支持配置sessionid cookie 的 path到"/"的。


            回復(fù)  更多評(píng)論   

          # re: resin的session id reuse特性(3)--總結(jié)[未登錄] 2007-12-28 19:55 飄然

          呵呵,lizongbo應(yīng)該是沒有看懂我的帖子,是jsessionid 的reuse,不是jsessionid放在cookie里面?zhèn)鬟f。

          session id reuse的表現(xiàn)在于兩個(gè)不同的webapp里面建立兩個(gè)session,但是jsessionid是一樣的。  回復(fù)  更多評(píng)論   

          # re: resin的session id reuse特性(3)--總結(jié)[未登錄] 2007-12-28 19:56 飄然

          不同的webapp,他們的session是不一樣的,不能相互訪問。  回復(fù)  更多評(píng)論   

          # re: resin的session id reuse特性(3)--總結(jié)[未登錄] 2009-05-12 13:35 ben

          你好.我也在關(guān)注這一塊兒的東西.具體實(shí)現(xiàn)方式能不能再詳細(xì)點(diǎn)呢?呵呵,我是菜鳥  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 蒲城县| 延安市| 吉木乃县| 岳普湖县| 岳西县| 渝北区| 曲靖市| 达日县| 丽江市| 清原| 曲松县| 丹江口市| 遂昌县| 察隅县| 岑溪市| 双城市| 称多县| 衡阳县| 盐山县| 江北区| 镇安县| 依安县| 琼海市| 临江市| 溧阳市| 大渡口区| 碌曲县| 原平市| 大洼县| 抚州市| 方城县| 南丹县| 比如县| 博湖县| 南郑县| 渝北区| 漳平市| 东光县| 略阳县| 高安市| 灵寿县|