`

tomcat6 vs tomcat7

阅读更多

 

 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 以前大家熟悉的数据库驱动程序加载方式:

  1. Class<?> cls = com.mysql.jdbc.Driver.class;  

或者

  1. Class.forName("com.mysql.jdbc.Driver");  

都已经不能用了。在使用 DriverManager 生成的数据库连接的时候,会出现“No suitable driver found for jdbc”这个异常。

 

现在正确的数据库驱动程序加载方式,要求生成数据库驱动类的对象。推荐 

  1. com.mysql.jdbc.Driver.class.newInstance();  

这种方式不用处理异常,而且生成的无用对象会最短时间被垃圾回收。

 

当然了,也可以用一个引用类型变量把此对象接出来,但没有什么实际用途吧……  

  1. java.sql.Driver driver = com.mysql.jdbc.Driver.class.newInstance();  

其中 java.sql.Driver 是各个数据库管理系统提供的驱动程序类的接口,属于 JDBC 规范,适合用 import java.sql.Driver; 进行缩写。 

 

3. 线程启动的问题。因为 Tomcat7 或者 -server 方式运行的爪哇虚拟机(JVM)的一些我尚未掌握的保护机制,所以当一个线程经历空循环时,就会被架空。  

  1. while(flag) { }  

于是通过 flag 作为线程控制变量的控制方法,就没办法继续使用了。这个时候,要时常跳过这个人工卡死的线程,以便其能够总在执行而不会真的陷入僵死。 

 


 
  1. 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>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics