作者PsMonkey (痞子军团团长)
看板java
标题Re: [JSP ] 请问JSP生命周期与全域变数问题
时间Tue Oct 22 12:17:32 2013
※ 引述《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
1F:推 LaPass:<%! @override public void destroy(){...} %> 大概是这样 10/22 12:38