以前公司项目一直在tomcat6上跑,前几天要求换成tomcat7,结果竟然出现了一系列错误,下面总结了一下tomcat6和tomcat7的区别:

第一个:
是关于数据库驱动程序加载。受数据库驱动异常困扰的同胞们,Tomcat7 下边因为 Tomcat 限定了类加载执行时静态代码的执行,需要在生成对象的时候才能够真正执行,所以在 Tomcat6 以前大家熟悉的数据库驱动程序加载方式:

1 Class<?> cls = com.mysql.jdbc.Driver.class;
2 //或
3 Class.forName("com.mysql.jdbc.Driver");

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

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

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

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

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

第二个:
是线程启动的问题。因为 Tomcat7 或者 -server 方式运行的JV)的一些我尚未掌握的保护机制,所以当一个线程经历空循环时,就会被架空。

1 while(flag) { }

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

1 while(flag) { Thread.yield(); }

Tomcat7 的配置文件中,Context 配置,debug 属性被取消了,如果依然使用,会报出一个警告。
同时 unpackWAR 属性的默认值,在 Tomcat6 时是 true ,意味着默认状态将会解压 .war 然后再执行;而 Tomcat7 变成了默认 false ,不展开。

第三个:
另外还有一个并不是 Tomcat7 新有的特点。之前 conf/Catalina/localhost 下边会自动建立 ROOT.xml ,现在不会了。然后之前此目录下的配置文件,会以其中 path 属性指明的路径为“应用路径”;现在则会以 XML 文件的名字作为应用路径。如果大家想制作一个不需要填写应用路径就可以访问的应用,请记得一定要自己建立一个 ROOT.xml ,区分大小写,然后在其中编写 <Context> 片段。

01 <Context  
02         crossContext="true"  
03         privileged="true"  
04         path=""  
05         docBase="/usr/local/example.war"  
06         reloadable="false"  
07         unpackWAR="true"  
08         cachingAllowed="true"  
09         cacheMaxSize="1024"  
10     ></Context>

crossContext="true" ,是允许应用通过 ServletContext.getContext() 去拿到一个通往别的应用 request dispatcher 。当然了,这种方法无法跨越现在 Tomcat 支持的虚拟主机界限。也就是说,能够穿透访问的,必须是和当前应用在一个 <Host> 之中的应用。
privileged="true" 意味着 Tomcat 自身的应用,比如· Tomcat Manager ,可以被当前这个应用访问。根据官方文档的解释,这个机理是改变应用的类加载器为 Server class loader 。我想,这种改变,会令应用程序发现 Tomcat 本身的类,都能够从应用自己的类加载器上寻找到。从而实现对 Tomcat 自身应用程序方法的调用。
path 和 docBase 不用多说,都要指定这二个属性的。其中 docBase 可以是目录也可以是结构完整的 .war 文件。
reloadable="true" 意味着 Tomcat 将提供对应用类路径( /WEB-INF/classes/ 和 /WEB-INF/lib/ )的监测。当这里边有内容改变并且其类已经被爪哇虚拟机(JVM)加载的时候,Tomcat 可以自行重新加载此类。不过此功能对 Tomcat 的稳定服务影响不小,调试环境可以使用,生产环境还是算了吧——当然,这只是我的个人建议。
unpackWAR 就如字面意思,unpackWAR="true" 意味着 Tomcat 会保存 .war 包的解压结果,然后直接对解压结果进行运行。我个人认为,考虑到爪哇虚拟机的类加载机制,每个类都仅加载一回,但是页面内容却没有类似的有效缓存,所以 .war 还是解压执行的比较好。而且日志也将造成 unpackWAR="false" 形同灾难。
cachingAllowed="true" 意味着开启了 Tomcat7 的静态缓存功能。静态文件包括 JavaScript 程序、图片声音等允许网络访问的文件以及 HTML 页面。
cacheMaxSize 是静态缓存功能缓冲区大小的设定。单位是 MB ,也就是 1024KB 。例子中设为 1024 ,意味着 1GB 。

第四个:
tomcat6配置管理员信息
1:打开tomcat6下的~/conf/tomcat-users.xml文件,关于用户角色、管理员的信息都在这个配置文件中。
2:在配置文件<tomcat-users>节点下添加如下xml

<role rolename="admin"/>
  <role rolename="manager"/>
  <user username="admin" password="admin" roles="admin,manager"/>
3:启动tomat6,输入:用户名:admin 密码:admin 登陆到管理员界面。
tomcat7配置管理员信息
1:打开tomcat7下的~/conf/tomcat-users.xml文件,关于用户角色、管理员的信息都在这个配置文件中。
2:在配置文件<tomcat-users>节点下添加如下xml
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles=" admin-gui , manager-gui "/>
3:启动tomat7,输入:用户名:admin 密码:admin 登陆到管理员界面。

转载于:https://www.cnblogs.com/queyuexzy/p/4415247.html

tomcat7介绍(一)相关推荐

  1. 【毕业设计】基于SSM实现酒店管理系统(论文+源码+ppt+视频)

    技术架构SSM (1)Spring是一个开源的Java/Java EE全功能栈的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本.当需要用到某一对象时不需要程序员在代码中增加一 ...

  2. tomcat7 mysql 连接池_Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

    Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: (1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 (2)dbcp 性能不佳 ...

  3. Tomcat7.0源码分析——Session管理分析(下)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/beliefer/article/details/52451061 前言 在<Tomcat7.0 ...

  4. Tomcat7.0源码分析——Session管理分析(上)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/beliefer/article/details/52450268 前言 对于广大java开发者而言, ...

  5. Tomcat介绍及性能优化

    一.Tomcat简单介绍: Sun公司创建了第一个Servlet容器,即Java Web Server,但JWS只是为了演示Servlet的相应功能,所以其性能很不稳定.与此同时,apache基金会组 ...

  6. MSM--Memcached_Session_Manager介绍及使用

    我 们都知道对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,以j2ee应用为例,一般我们都会部署在 tomcat下,假如我们部署了10台tomcat服务器,那这 ...

  7. 简单介绍tomcat中maxThreads,acceptCount,connectionTimeout

    <?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOW ...

  8. tomcat文件目录结构及功能介绍

    tomcat-7.0.50解压版,主目录一览: 我们可以看到主目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹,下面对他们分别进行介绍: 如下介绍: bin目 ...

  9. 【转】Tomcat7启动的总过程 (有时间自己写下tomcat8的)

    首先,说明tomcat8和tomcat7的启动过程不一样,这篇是针对tomcat7的. Tomcat启动的总过程 通过上面的介绍,我们总体上清楚了各个组件的生命周期的各个阶段具体都是如何运作的.接下来 ...

最新文章

  1. 这个 MySQL bug 99% 的人会踩坑!
  2. gdb C++程序coredump不显示行号问题
  3. PHP传值及引用_无需整理
  4. drools6.5_Drools 6.2.0.Final发布
  5. 【hihocoder - offer编程练习赛60 B】最大顺子(双指针,思维)
  6. 去越南旅游,2万人民币能承担几天的花销?
  7. Windows Phone 项目实战之账户助手
  8. GDT 全局描述符表
  9. excel计算机财务管理最佳现金余额,计算机财务管理excel选择题
  10. excel制图小技巧
  11. 基于opencv的重叠图像的凹点分割(C++)
  12. Win10系统 禁止某个程序\软件联网
  13. 计算机自我鉴定高中生200字,精编高中生自我鉴定200字左右3篇 高中自我鉴定200字...
  14. 程序猿生存指南-33 寂寞撩人
  15. 北卡州立大学计算机科学硕士,北卡罗莱纳州立大学计算机科学专业研究生申请条件有哪些?...
  16. 树莓派能否替代linux开发板,12 个可替代树莓派的单板机 | Linux 中国
  17. nyoj-366 D的小L
  18. 关于Pycharm主题Darcula下使用jupyter显示图片的颜色错误
  19. 如何通过海外住宅代理预防Facebook账号出现关联的情况
  20. ES - 查询所有数据

热门文章

  1. 【微电网优化】基于matlab粒子群优化算法的微电网调度(光伏、储能、电动车、电网交互)【含Matlab源码 2190期】
  2. Mybatis再学习
  3. 做生产智能供料系统公司排名
  4. 【Web系列二十】Django+Celery+Asgiref+Channels+协程锁实现Websocket异步并发
  5. 每个工程师都应该知道的事——射频发射机功率怎么测量
  6. 使用SQL计算AUC值
  7. Qt项目实战3:二维码生成器
  8. 第17篇 账户管理(助记词)
  9. HBase安装及使用
  10. MLAPP————第十三章 稀疏线性模型