tomcat配置数据库连接池

一.server.xml配置数据源:

<Context >
  <Resource name="jdbc/BookDB"
            auth="Container"
            type="javax.sql.DataSource">
 
    <ResourceParams name="jdbc/BookDB">
       <parameter>
          <name>factory</name>
          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
       </parameter>

       <parameter>
          <name>maxActive</name>
          <value>100</value>    <!-- 如果设为0,则为无穷大 -->
       </parameter>
 
       <parameter>
          <name>maxIdle</name>
          <value>30</value>
       </parameter>
    
       <parameter>
          <name>maxWait</name>
          <value>10000</value> <!-- 10秒 如果为-1则不限时长 -->
       </parameter>
 
       <parameter>
          <name>username</name>
          <value>dbuser</value>
       </parameter>
      
       <parameter>
          <name>password</name>
          <value>1234</value>
       </parameter>

       <parameter>
          <name>driverClassName</name>
          <value>com.mysql.jdbc.Driver</value>
       <parameter>
      
       <parameter>
          <name>url</name>
          <value>jdbc:mysql://localhost:3306/BookDB?autoReconnect=true</value>
       <parameter>
    </ResourceParams>
</Context>

参数说明:
 1.Resource
   1)name指定Resource的JDNI名字
   2)auth指定Resource的管理者(Manager).有二个可选值Container和Application
         Container表示由容器来创建和管理Resource
         Application表示由Web应用来创建和管理Resource
   3)type指定Resource所属的Java类名
 2.ResourceParam
   1)factory指定生成DataSource的factory的类名
   2)maxActive指定数据库连接池中处于活动状态的数据库连接的最大数目
   3)maxIdle指定数据库连接池中处于空闲状态的数据库连接的最大数目
   4)maxWait指定数据库连接池中的数据库连接处于空闲状态的最长时间.
            单位为毫秒,超过这一时间将会抛出异常.取值为-1,表示可无限期地等待
   5)username指定连接数据库的用户名
   6)password指定连接数据库的口令
   7)driverClassName指定连接数据库的JDBC驱动程序
   8)url指定连接数据库的URL


二.web.xml声明对JDNI Resource的引用

 <web-app>
   <resource-ref>
      <description>DB connection</description>
      <res-ref-name>jdbc/BookDB</res-ref-name>
      <rse-type>javax.sql.DataSource</rs-type>
      <res-auth>Container</res-auth>
  <resource-ref>
 </web-app>

参数说明:
  description:
  res-ref-name:指定引用资源的JDNI史字,与<Resource>中的name属性对应
  res-type指定引用资源的类名字.与<Resource>中的type属性对应
  res-auth指定引用资源的管理者.与<Resource>中的auth对应

三.访问数据源
 1)查找数据源,产生java.sql.DataSoruce引用
  javax.nameing.Context提供查找 JDNI Resource的接口
  
    Context ctx=new InitialContext();
    DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/BookDB");
 
  2)取得连接
   Connection con=ds.getConnection();

  3)关闭连接
   con.close();
   close()方法,把Connection返回到数据库连接池中,使Connection恢复空头状态
四.jsp应用范例
  (略)
五.比较JDBC

  1).导入包
   A:
    import java.sql.*;
   B:
    import java.sql.*;
    import javax.sql.*;
    import javax.naming.*;
  2)寻找加载驱动程序
   A:
    public BookDB() throws Exception{
      Class.forName("com.mysql.jdbc.Driver");
    }
   B:
    public BookDB() throws Exception{
      Context ctx=new Context();
      if(ctx==null)
        throw new Exception("No Context");
      ds=(DataSource)ctx.lookup("java:comp/env/jdbc/BookDB");
    }
  3)取得连接
   A:
   public Connection getConnection() throws Exception{
     return java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
   }
   B:
   public Connection getConnection() throws Exception{
     return ds.getConnection();
   }
  4)关闭连接(作用不一样)
   public void closeConnection(Connection con){
     try{
       if(con!=null)
          con.close();
     }catch(Exception e){
        e.printStackTrace();
     }
   }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值