Tomcat配置JDBC数据库连接池

 

在多用户的web应用程序中,无论你是使用哪一种数据库,那么获取数据库连接都是比较消耗系统资

源的, 针对数据库访问获取连接最好是使用数据库连接池技术,数据库连接池负责分配,管理和释

放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个,连接超过

最大的空闲时间的时候会自动释放,这样就避免了由于没有人为的释放数据库连接而造成资源耗尽。

这样将会提高数据库的访问性能。

 

下面就说明下数据库连接池的配置:

 

第一步:配置JNDI

找到Tomcat根目录\conf\context.xml文件,在<Context>节点中添加<Resource>节点,内容如下:

<!-- JNDI CONFIG START -->
    <Resource name="jdbc/bc"     
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="sa"
        password="123456"
        driverClassName="net.sourceforge.jtds.jdbc.Driver"
        url="jdbc:jtds:sqlserver://localhost:1433"
        DatabaseName="bc_salary_db"/>
    <!-- JNDI CONFIG END -->

 

参数说明:

name :指定Resource的jndi的名称

auth :指定管理Resource的Manager,有两个可选值:Container 和 Application,Container表示由容器创建Resource,Application表示由Web应用来创建和管理Resource

type :指定Resource所属的类名

maxActive :指定连接池中处于活动状态的连接最大的个数,取值“0”无限制

maxIdle : 指定连接池中处于空闲状态的连接的最大个数,取值“0”无限制

maxWait :指定连接池中连接在空闲时间的最长时间(单位:毫秒),超过这一时间将会抛出异常,取值“-1”无限制等待

username :数据库连接用户名

password :数据库连接密码

driverClassName :数据库连接驱动名称

url :数据库连接URL

DatabaseName :数据库名称

 

 

第二步:配置web.xml文件

 

在<web-app>节点下添加如下配置:

 

<!--  ============= 配置数据库连接池开始 ================ -->
 <resource-ref>
  <description>DataSource</description>
  <res-ref-name>jdbc/bc</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>
 <!--  ============= 配置数据库连接池结束 ================ -->

 

参数说明:

description :对引用资源的说明

res-ref-name :指定引用jndi的名称

res-type :指定引用资源类名称

res-auth :指定管理所引用资源的Manager

 

第三步:添加数据库驱动文件

 

由于数据源是由Tomcat创建并维护,故我们应该把连接数据库的驱动包拷贝到Tomcat根目录下的lib目录下。

 

第四步:使用数据库连接池

 

下面就可以在自己的程序中,通过JNDI来获取数据源来获取数据库连接池中的连接了。

获取数据库连接代码如下:

 

JNDI所依赖的包包:

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

 

try {
   Context context = new InitialContext();
   
   DataSource dataSource = (DataSource)context.lookup("java:comp/env/jdbc/bc");
   
   conn = dataSource.getConnection();
   
  } catch (NamingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 

ok,启动程序,看应该可以使用了,搞定图片 

 

posted @ 2011-10-06 20:00  dcz1001  阅读(321)  评论(0编辑  收藏  举报