Tomcat7和mysql连接池dbcp方式的配置方法和测试

一.设计测试用的数据库

1.新建数据库

create database testmysql;

2.新建一个用户信息数据表

create table test(

username varchar(20) primary key,

password varchar(20));

3.给新表插入数据信息

insert into test values(‘keivn‘,‘123456‘);

二. 设计局部数据源和连接池

1.在webapps目录中新建test目录,然后在test中分别新建WEB-INF和META-INF目录,在WEB-INF目录中新建classes和lib目录,将mysql数据库驱动文.jar放进lib目录中这里我使用的版本是mysql-connector-java-5.1.22-bin.jar

2.在META-INF目录中新建context.xml文件,然后将下面内容复制,保存

<?xml version=‘1.0‘ encoding=‘utf-8‘?>

<Context>

<Resource name="jdbc/mysql"

auth="Container"

driverClassName="com.mysql.jdbc.Driver"

type="javax.sql.DataSource"

url="jdbc:mysql://localhost:3306/testmysql"

username="root"

password="123456"

maxActive="100"

maxIdle="30"

maxWait="10000" />

</Context>

context.xml中的参数的解析如下:

name属性是数据源名称,通常采取jdbc/**.

type属性是数据源方式。

driverClassName属性是驱动程序名称。

username,password,数据库名称和密码

url:访问的数据库路径

maxActive属性是并发连接的最大数。设置为0则无限制。

maxWait属性是等待连接的最大连接的时间。

maxIdle属性是连接池中空闲的连接的个数。

上文中的设置的 maxActive="100"说明可以最大连接的个数为100个,再建立连接,则出现异常。

而maxIdle="30"说明当关闭数据库时(不是真正的断开连接,而是归还连接池中)连接池中最大可以有空闲的连接数为30个。

若是再有建立连接,此时若连接池中没有空闲的连接,但是又没有达到maxActive并发的最大连接数,则在连接池中建立连接。

3.然后在WEB-INF中新建web.xml文件,然后将下面内容复制,保存

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0"

metadata-complete="true">

<display-name>test</display-name>

<welcome-file-list>

<welcome-file>test.jsp</welcome-file>

</welcome-file-list>

<resource-ref>

<description>DB Connection</description>

<res-ref-name>jdbc/mysql</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

</web-app>

4.完成后,重启tomcat服务器。

三.编写一个jsp页面测试设置连接池,连接数据库是否成功。

在test目录中新建test.jsp文件,然后将下面内容复制,保存

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*, javax.sql.*, javax.naming.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>test</title>
</head>
<body>
<%
Connection conn=null;
PreparedStatement stmt=null;
ResultSet rs=null;

String sql=null;
String username=null;
String alias=null;
String pwd=null;
String strMsg=null;
try{
    Context cxt = new InitialContext();
    DataSource ds = (DataSource)cxt.lookup("java:/comp/env/jdbc/mysql");
    conn = ds.getConnection();
    sql="select * from  test";
    stmt=conn.prepareStatement(sql);
    rs=stmt.executeQuery();
    if(rs.next()){
        strMsg="连接ok";
        out.println(rs.getString("username"));
  out.println(rs.getString("password"));
        out.println("连接ok");
    }else{
        out.println("rs.next() fail");
    }
    rs.close();
   
} catch(Exception e){
    out.println("连接失败:"+e.getMessage());
    //e.printStackTrace();
}

try{
    if(stmt!=null) stmt.close();
}catch(Exception e){}

try{
    if(conn!=null) conn.close();
}catch(Exception e){}

%>
</body>
</html>

使用浏览器输入http://localhost:8080/test/test.jsp

时间: 2024-10-04 23:54:31

Tomcat7和mysql连接池dbcp方式的配置方法和测试的相关文章

开源JDBC连接池DBCP和C3P0配置(转)

现在Tomcat下使用的是公司框架默认的 Apache DBCP连接池.此种连接池虽出自名门Apache基金会.但口碑不是很好,在新版的Hibernate中已经放弃了对DBCP的支持,取而代之的是 C3P0.开始我还对DBCP抱有希望,加上各种参数设置,但均无效.后来换上了C3P0,使用其testConnectionOnCheckout. testConnectionOnCheckin参数配置后果然一剑封喉的解决了问题.(说明:此种办法其实会带来一定的性能损耗)一.DBCP和C3P0连接池常用配

nodejs + redis/mysql 连接池问题

nodejs + redis/mysql 连接池问题 需不需要连接池 连接池的作用主要是较少每次临时建立连接所带来的开销.初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接池的.但是这只是我们初步下意识的感觉,下面我们详细分析来看看这个结论对是不对. 先从简单的redis开始. redis服务器也是运行在单线程上的.俩都是单线程,看起来更加坚定不需要连接池的结论了. 从详细的图像来看看nodejs 连接 redis用连接池有没有意义. 上图中,nodejs共有俩连接,

redis mysql 连接池 之 golang 实现

分享一下 golang 实现的 redis 和 mysql 连接池,可以在项目中直接引用连接池句柄,调用对应的方法. 举个栗子: 1 mysql 连接池的使用 (1) 在项目子目录放置 mysql.go (2)在需要调用的地方导入连接池句柄 DB (3)调用 DB.Query() 2 redis 连接池的使用 (1)在项目子目录放置 redis.go (2)在需要调用的地方导入连接池句柄 Cache (3)调用 Cache.SetString ("test_key", "te

node.js中mysql连接池的使用

https://cnodejs.org/topic/58378543bde2b59e06141f5a 起初的做法是创建一个连接然后使用,后来发现一段时间后会出现卡死不响应的情况,只有重启nodejs服务,搜索一番后想到了用连接池,经测试,不再出现卡死不响应情况. 参考链接: https://www.npmjs.com/package/mysql http://blog.csdn.net/lovingshu/article/details/41721233 Node.js mysql连接池模块 1

解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。系统发布第二天访问链接关闭问题。

解决Mysql连接池被关闭  ,hibernate尝试连接不能连接的问题. (默认MySQL连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池. 所以系统发布第二天访问会失去链接,导致访问失败.因此稳定解决办法是把hibernate默认的连接池换成c3p0链接池. 在Hibernate(spring管理)中的配置:<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledData

mysql连接池模块

如果不想程序在查询数据时卡死或等待过长时间,一般不推荐在node中开启一个连接后全部查询都用这个链接并且不关闭.因为node里面的mysql不像php里的那样会在完成查询后断开,只要不主动断开,连接一直存在,当连接数量达到一定数量时就会产生严重的阻塞,出现各种延时和卡死现象.在并发量较大时,可以通过建立连接池来缓解并发压力. 在node中的mysql模块里其用来操作数据的query()方法接收的参数是不同的,在使用时需要特别注意.具体模块如下: /** * mysql连接池模块 * @autho

MySQL连接池

1. 1 using System; 2 using System.Collections; 3 using MySql.Data.MySqlClient; 4 5 namespace Helper 6 { 7 /// <summary> 8 /// MySQL连接池 9 /// </summary> 10 public static class MySQLConnPool 11 { 12 //private static string connStr = "server

greentor MySQL连接池实现

greentor MySQL连接池实现 https://en.wikipedia.org/wiki/Connection_pool 通过greentor实现了pymysql在Tornado上异步调用的过程后发现,每次建立数据库连接都会经过socket 3次握手,而每一次socket读写都会伴随着greenlet的切换,以及ioloop的callback过程,虽然是异步了,但是IO性能并没有提升,所以在研究了TorMySQL连接池的实现后,实现了greentor自己的连接池. https://gi

Swoole MySQL 连接池的实现

目录 概述 代码 扩展 小结 概述 这是关于 Swoole 入门学习的第八篇文章:Swoole MySQL 连接池的实现. 第七篇:Swoole RPC 的实现 第六篇:Swoole 整合成一个小框架 第五篇:Swoole 多协议 多端口 的应用 第四篇:Swoole HTTP 的应用 第三篇:Swoole WebSocket 的应用 第二篇:Swoole Task 的应用 第一篇:Swoole Timer 的应用 收到读者的咨询,这情况大家可能也会有,所以就在这说说: "亮哥,我今年30岁了,