tomcat 缓存

今天写项目的时候遇到一个问题:  就是当打印自定义异常的时候一直没有读出来,最后问老师,老师给了一个方法是删除tomcat 下的work文件夹,结果就可以了,问题是tomcat会缓存编译好的servlet类文件,虽然问题解决了,但不知道更深层次的原因,work文件的存在是有它的道理的,希望有过路的高手朋友能给小弟解释以下,小弟必将感激不尽!!

posted on 2007-09-24 19:28 eric.joe 阅读(1423) 评论(6)  编辑  收藏

评论

# re: tomcat 缓存[未登录] 2007-09-24 21:19 坏男孩

jsp最终转化为servlet,work的作用就是加快速度,如果jsp没有变化就不重新编译了;
  回复  更多评论   

# re: tomcat 缓存 2007-09-25 00:18 xmlspy

jsp的实质就是servlet  回复  更多评论   

# re: tomcat 缓存 2007-09-25 09:58 朱雀

jsp最终变成输出的html代码的生命周期是这样的

Web服务器读取jsp文件,将jsp文件转换为同名+_jsp.java文件,然后编译生成.class文件,Web服务器通过执行该.class文件,输出其中的html代码,就是你看到的在浏览器中的页面了。tomcat将所有生成的.java文件放在work目录下面,work目录下面的文件对于你直接纠错和学习jsp机制都是很有用的。  回复  更多评论   

# re: tomcat 缓存 2007-09-25 15:26 GaoYP

是否修改过系统的时间?tomcat比较笨,只按文件的时间来作更新。  回复  更多评论   

# re: tomcat 缓存 2007-09-26 13:49 Unmi

你看看Tomcat的源代码就知道了,当请求jsp页面时,Tomcat会分派给JspServlet来处理,在 jspServlet的方法 service()中有一句
boolean precompile = preCompile(request);
它会判断你请求jsp页面时有没有带?jsp_precompile查询字符串,如果带了就会重新编译

然后再由 
serviceJspFile(request, response, jspUri, null, precompile);
进一步判断是否要进行编译jsp文件

下面由JspServletWraper service方法
if (options.getDevelopment() || firstTime ) {
synchronized (this) {
if (firstTime) {
firstTime = false;
}
// The following sets reload to true, if necessary
ctxt.compile();
}
}
再到JspCompilationContext.compile()方法
if (isPackagedTagFile || jspCompiler.isOutDated()) {
才编译

关键就在Compiler的
isOutDated(boolean checkClass)
的判断上

如果你真要研究就应该去看看这段代码,判断标准是,如果 jsp最后修改时间大于目标文件的最后修改时间要重新编译。
还有一种情况就是即使jsp的最后修改时间晚于目标文件的最后修改时间,但只要jsp中用了
include指令包含的某个文件的最后修改时间早于对应目标文件的修改时间的话,也是需要重新编译主jsp文件的

从这里可以看出,虽然jsp文件没改,但是被包含的jsp文件改了仍然会重新编译的,有些应用服务器就没做到这一点,被包含文件改了,还得动一动主文件才能看到效果。

需要的话我可以整理一篇博客日志记录下来。
  回复  更多评论   

# re: tomcat 缓存 2007-09-27 10:51 千里冰封

所以的JSP最终都是要编译成servlet的  回复  更多评论   



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

公告

I won't forget the way you're kissing
The feeling's so strong were lasting for so long
But I'm not the man your heart is missing

随笔分类

相册

收藏夹

积分与排名

最新评论

阅读排行榜