Re: [JSP ] 請問JSP生命週期與全域變數問題

看板java作者 (痞子軍團團長)時間11年前 (2013/10/22 12:17), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《NewSpec (新規格)》之銘言: : 1. JSP所translate出來, 用以實際render網頁輸出的servlet實體 : 在web container中的數量與存活時間大概是多久? : 我找了好一陣子, 都沒有找到什麼相關資料 : 我想當然一定是implementation dependent的 : 但還是想看看有沒有什麼確切的資料或文獻可以佐證的~ : 例如如果同時有m個request進來的話, JSP servlet會產生n個實體 : 在t時間內如果沒有其他request發生, 該n個實體會被清除掉這樣. : 推 PsMonkey:你可以先看一下這篇 #1I7Zjb4B 10/22 11:41 : → swpoker:好快~我也是想到這篇! 10/22 11:46 : : 痾... 我不是以初學者的身分發這些問題的 : 只是我帶的人有這些小問題, 以 "這樣做比較好" 並不足以打發他們 : 所以我需要一些更確切的答案:P 說真的,不是我想吐槽... [下略數十字] zanyking 那篇,如果擺明的是初學者 我還不敢要他去看,因為... 連我自己都快看不懂了 [淚目] (俺是寫 GWT 的,管什麼 JSP 嘛真是的 [誤]) //////// zanyking 原文引言分隔線 //////// 2. 請問Container如果突然覺得JSP應該重新Compile 一次,我們能保證他Compile 出 來的『新的』JspServlet,仍然跟舊的名稱一樣、記憶體結構一樣嗎? 答案是: 不能保證,JSP Engine高興做啥就做啥,有些高級Java Web Server,為了支援線上 動態編輯JSP,然後直接動態掛載執行,會把改過的JSP Compile 成不同的servlet Name但是吃同樣的servlet path,這是因為在多緒執行環境裡,可能某些User 已經在存取使用該JSP前一版的servlet class instance了,所以不可以直接下線 ,得要先把新版的準備好,把流量導過去後才把舊的版本從classLoader裡卸載。 ///////////////////////////////////////// zanyking 的第二點就說了 連什麼時候 container 什麼時候重新 compile 一次都無法保證 那就某種程度上回答了你的第一個問題 如果你要問實務面,那我告訴你 AppEngine 上的狀況 AppEngine 會在 webapp idle 的時候把整個 container 都砍掉 另外,自己複寫 servlet 的 destroy() 去實驗不是比較實在嗎? 你自己都知道這是 implementation dependence(我比較相信是 setting) 那還不如在你的環境上實際實驗 雖然我不知道怎麼在 jsp 裡頭寫 destroy() [喂喂] -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.226.85

10/22 12:38, , 1F
<%! @override public void destroy(){...} %> 大概是這樣
10/22 12:38, 1F
文章代碼(AID): #1IPVnVOA (java)
文章代碼(AID): #1IPVnVOA (java)