Tomcat6 vs Tomcat7
试用 Tomcat7.x 与 Tomcat6.x 的明显不同 + Context 填写方法 + 默认应用配置方法
http://blog.csdn.net/shanelooli/article/details/7408675
Tomcat7 与tomcat6之间得区别---${new.title}
http://my.oschina.net/7shell/blog/57349
Tomcat6--> Tomcat7记录tomcat迁移出现的问题
http://www.cnblogs.com/huxiaoyun90/archive/2013/04/29/3050649.html
Tomcat6 Tomcat7对比测试
http://blog.csdn.net/yydcj/article/details/8487037
http://www.oschina.net/question/86179_9487
Tomcat 7 热部署配置
http://linhao315.iteye.com/blog/1341489
使用 Tomcat 7 新的连接池 —— Tomcat jdbc pool
http://www.oschina.net/question/12_36910
Tomcat7 七大新特性和新增功能
http://cuizhihua.iteye.com/blog/1905962
http://andrius.miasnikovas.lt/2010/07/whats-new-in-tomcat-7/
http://developer.51cto.com/art/201006/208440.htm
1. tomcat 7对EL表达式的语法要求比较严格,例如"${new.title}", 因包含关键字new就会导致解析出错。
这个时候为我们可以修改配置文件,忽略关键词的设置:修改tomcat属性,忽略对EL表达式的关键字检查:
修改$CATALINA_BASE/conf/catalina.properties文件,添加org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true选项。
另外,& 在url重写中需要修改为&要不然会报错
2. 关于数据库驱动程序加载。受数据库驱动异常困扰的同胞们,Tomcat7 下边因为 Tomcat 限定了类加载执行时静态代码的执行,需要在生成对象的时候才能够真正执行,所以在 Tomcat6 以前大家熟悉的数据库驱动程序加载方式:
- Class<?> cls = com.mysql.jdbc.Driver.class;
或者
- Class.forName("com.mysql.jdbc.Driver");
都已经不能用了。在使用 DriverManager 生成的数据库连接的时候,会出现“No suitable driver found for jdbc”这个异常。
现在正确的数据库驱动程序加载方式,要求生成数据库驱动类的对象。推荐
- com.mysql.jdbc.Driver.class.newInstance();
这种方式不用处理异常,而且生成的无用对象会最短时间被垃圾回收。
当然了,也可以用一个引用类型变量把此对象接出来,但没有什么实际用途吧……
- java.sql.Driver driver = com.mysql.jdbc.Driver.class.newInstance();
其中 java.sql.Driver 是各个数据库管理系统提供的驱动程序类的接口,属于 JDBC 规范,适合用 import java.sql.Driver; 进行缩写。
3. 线程启动的问题。因为 Tomcat7 或者 -server 方式运行的爪哇虚拟机(JVM)的一些我尚未掌握的保护机制,所以当一个线程经历空循环时,就会被架空。
- while(flag) { }
于是通过 flag 作为线程控制变量的控制方法,就没办法继续使用了。这个时候,要时常跳过这个人工卡死的线程,以便其能够总在执行而不会真的陷入僵死。
- while(flag) { Thread.yield(); }
3. org.apache.catalina.mbeans.ServerLifecycleListene问题描述:java.lang.ClassNotFoundException: org.apache.catalina.mbeans.ServerLifecycleListener
发现居然找不到这个类,然后把catatina.jar下载下来反编译一看mbenas这个文件夹居然是空的
解决办法:
tomcat 6.0.18以前,conf/server.xml里面的配置有这项
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />注释掉就可以了
<!--<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> -->
4. taglib definition not consistent with specification version
问题描述:java.lang.IllegalArgumentException: taglib definition not consistent with specification version
tomcat 6.0.18里面的web.xml里面的tag配置如下:
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
解决办法:
tomcat 7.0.25里面web.xml的tag配置应该如下所示
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
</jsp-config>