Tomcat配置数据库连接池

上篇博文中记录了使用数据库连接池的重要性和如何用java代码自己写一个连接池,网上查了一番

发现原来像tomcat这种服务器自带了连接池,可以通过配置文件直接使用,下面来介绍一下使用方法。

 

本例为myeclipse+tomcat7.0+sqlserver2008配置数据库连接池

具体步骤:

1、

在server.xml中设置数据源,以sql server 2008数据库为例,如下:
在<GlobalNamingResources> </GlobalNamingResources>节点中加入,
     <Resource
        name="jdbc/DBPool"
        type="javax.sql.DataSource"
        password="aaaaaa"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        maxIdle="2"
        maxWait="5000"
        username="sa"
        url="jdbc:sqlserver://localhost:1433;DataBaseName=COFFEE"
        maxActive="4"/>  

       属性说明:name,数据源名称,通常取”jdbc/XXX”的格式;
            type,”javax.sql.DataSource”;
            password,数据库用户密码;
            driveClassName,数据库驱动;
            maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
                     接将被标记为不可用,然后被释放。设为0表示无限制。
            MaxActive,连接池的最大数据库连接数。设为0表示无限制。
            maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
                     无限制。
2、

在你的web应用程序的web.xml中设置数据源参考,如下:
  在<web-app></web-app>节点中加入,
  <resource-ref>
    <description>DB Connection Pool</description>
    <res-ref-name>jdbc/DBPool</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
 </resource-ref>
  子节点说明: description,描述信息;
               res-ref-name,参考数据源名字,同上一步的属性name;
               res-type,资源类型,”javax.sql.DataSource”;
               res-auth,”Container”;
               res-sharing-scope,”Shareable”;
3、

在tomcat目录下的context.xml中设置数据源链接,如下:
  在<Context></Context>中加入:
  <ResourceLink
         name="jdbc/DBPool"
         type="javax.sql.DataSource"
         global="jdbc/DBPool"/>

      属性说明:name,同第2步和第3步的属性name值,和子节点res-ref-name值;
             type,同样取”javax.sql.DataSource”;
             global,同name值。

4、测试:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class Test {
	private static DataSource pool;
	public static void main(String[] args) {
		Context env = null;
		  try {
                      env = (Context) new InitialContext().lookup("java:comp/env");
            	      pool = (DataSource)env.lookup("jdbc/DBPool");
         	      if(pool==null) 
                          System.err.println("'DBPool' is an unknown DataSource");
                  } catch(NamingException ne) {
                          ne.printStackTrace();
                  }
		  Connection conn;
		try {
			conn = pool.getConnection();
			String sql = "select * from allbook";
			PreparedStatement ps;
			ps = conn.prepareStatement(sql);
			ResultSet rs=ps.executeQuery();
			while(rs.next()){
				System.out.println(rs.getString("BOOKNAME"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}


 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值