Dev2Dev论坛

 找回密码
 注册
搜索
查看: 74|回复: 0

Tomcat 7 有价值的新特性 [复制链接]

Rank: 1

robot 发表于 2011-9-7 23:30:04 |显示全部楼层
今天到tomcat主站上查资料,发现Tomcat7都出到7.0.21且已经stable一段时间了,不禁搜索了一下相关信息,整理中发现了几个很有价值的新特性。 内存泄露的侦测和防止 线上应用有长时间不重启会出现运行异常的情况,7的这个特性可能会改善这个问题,详细说明如下: 开发者在部署他们写的程序到生产环境上时,经常会遇到Pemgen错误:OutOfMemoryError。这是由于内存泄露而引起的。通常开发者是通过增大permgen内存的大小去解决或者就是重新启动Tomcat。 Tomcat 7包含了一个新的特性,它通过把不能垃圾回收的引用对象移走的方法,能解决一些Permgen内存泄露的问题。 如下情况下会触发内存泄露: JDBC驱动的注册 一些日志框架 在ThreadLocals中保存了对象但没有删除它们 启动了线程但没停止 在war文件外使用别名去存储静态内容 Web应用程序需要静态资源文件,比如象CSS,Javascript和视频文件、图片文件等。通常都把它们打包放在war文件中,这将增加WAR文件的大小并且导致很多重复的加载静态资源。 7允许使用新的aliases属性,指出静态文件资源的位置,可以通过使用Classloader.getResourceAsStream(‘/static/…’)或者在链接中嵌入的方法让Tomcat去解析绝对路径,下面是一个在context.xml中配置的例子: < ?xml version="1.0" encoding="UTF-8"? > < Context path="/Tomcat7demo" aliases="/static=/Users/liyan/Movies/" > < /Context > 假设/Users/liyan/Movies/这个文件夹存放有一张图片bg.png,如果war文件以Tomcat7demo的名字部署,那么可以通过以下三个方式去访问这张图片 1.直接访问 http://localhost:8080/Tomcat7demo/static/bg.png 2.在HTML链接中访问:< img src="/Tomcat7demo/static/bg.png" / > 3.通过JAVA代码访问: ByteArrayInputStream bais = (ByteArrayInputStream)getServletContext().getResourceAsStream(“/static/bg.png”); … 继续阅读
links:http://li3huo.com/2011/09/valuable-new-features-of-tomcat-7/
您需要登录后才可以回帖 登录 | 注册

Archiver|Dev2Dev

GMT+8, 2012-5-21 12:39 , Processed in 0.858917 second(s), 12 queries .

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部