wap服务器管理:tomcat 中 Context 配置数据库连接池以及重要说明

  最近 公司wap服务器 tomcat出现重大问题,报错:200个线程被用完,导致所有的系统无法运行,必须重启tomcat,之后发现是tomcat连接池的问题, maxWait="-1"      导致服务器处于无限的等待之中。后来改成maxWait="5000"。服务器不再报线程用完的错误,但是产生了新的错误;

  

什么是连接池:

1)存放Connection对象的容器;

2)减少连接数据库的开销;

3)程序请求连接时,在Connection Pool中取连接;

4)连接使用完后,放回Connection Pool,不释放;

5)Connection Pool对连接进行管理:计数、监控连接状态;

wap服务器管理:tomcat 中 Context 配置数据库连接池以及重要说明_第1张图片 

tomcat 中<Context path="/gnx" docBase="d:/gnx/" reloadable="true"/>

 

在Tomcat的安装目录下conf目录下的server.xml文件中

增加一个xml代码片段

<Context path="/gnx" docBase=”d:/gnx” reloadable=”true” />,

该代码片段中每个属性的含义与用途是什么?

contex指上下文,实际上就是一个web项目;

path是虚拟目录,访问的时候用localhost:8080/gnx/*.jsp访问网页,gnx前面要加/;

docBase是网页实际存放位置的根目录,映射为path虚拟目录;

 reloadable="true"表示你修改了jsp文件后不需要重启就可以实现显示的同步。

 

数据库连接池可以再这里配置,例子

 

<Context path="/gnx" docBase="D:/common/Tomcat 6.0/webapps/gnx" debug="0" reloadable="true" cookies="false">  <Resource name="oraPool"     type="javax.sql.DataSource"         driverClassName="oracle.jdbc.driver.OracleDriver"      url="jdbc:oracle:thin:@192.168.0.211:1521:csdb"        

 maxIdle="2"        

 maxWait="5000"         

username="WAPUSER"        

 password="WAPUSER"         

maxActive="50"/>

 </Context>

 maxIdle 表示活动连接数;

maxActive 表示最大连接数;

maxWait 表示当数据库连接用完了,等待的时间,单位是 ms。默认是 -1 表示无限等待。

程序用完连接后,应该马上释放,也就是放回连接池。

当程序中某一个连接没有释放,会导致连接池中的可用的连接耗尽:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool exhausted

不能创建新连接,连接池耗尽。因为数据库连接个数已经达到最大,不能再新建了。

此时,如果  maxWait="-1",tomcat 将彻底完蛋。所有系统将无法访问,系统处于无限的等待之中。

将 maxWait="5000",也就是等待5秒钟。由于系统中有处于活动的连接   maxIdle="2"。在5秒之内,可以使用这个2个活动连接。超时,系统将报错。

但此时,由于有很多未关闭的数据库连接,整个系统中,也只有两个活动连接 可以使用了。

因此,数据库释放 是非常重要的。

当然,我们完全可以把这些数据库释放的工作,交给 hibernate 了。这也是为什么要使用hibernate的原因之一了。

 少了 path="/gnx" 会出现

javax.naming.NameNotFoundException: Name XXX is not bound in this Context

你可能感兴趣的:(wap服务器管理:tomcat 中 Context 配置数据库连接池以及重要说明)