首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

配备tomcat6创建mysql连接池

2012-10-25 
配置tomcat6创建mysql连接池刚做完一个小项目,是用普通的JDBC方式取得与数据库的连接的,现在想用数据库连

配置tomcat6创建mysql连接池
  刚做完一个小项目,是用普通的JDBC方式取得与数据库的连接的,现在想用数据库连接池的方式取得与数据库的连接,提高访问的效率。于是花了一下午去弄这个连接池的实现,我用的是tomcat6.x和mysql的数据库,刚开始的时候配置总是出错,提示 Cannot create JDBC driver of class '' for connect URL '',在网上查了有关的资料,说的方法都要么不全面要么观点不一致,经过总结和实验结果,终于配置通过,下面分享一下我的配置过程,没什么复杂的东西但是清楚了可以节省很多时间在这上面。
1.首先把mysql的驱动程序拷贝到tomcat根目录下的lib目录,原来我的工程的lib目录下也考了驱动程序但是会出错提示找不到驱动,所以根目录下的lib目录还是要考一个。
2.配置tomcat根目录/conf下的server.xml文件,在<GlobalNamingResources>标签中插入如下标签:

<Resource name="jdbc/Testcp" auth="Container"  type="javax.sql.DataSource"driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/bbs?autoReconnect=true"maxActive="50" maxldle="10" maxWait="5000"username="root"password="admin" />  

上面标签的具体含义我就不解释了,接着在<HOST>标签中插入如下标签:
<Context path="/Testconnpool" debug="5" reloadable="true" crossContext="true">         <ResourceLink name="jdbc/Testcp" global="jdbc/Testcp" type="javax.sql.DataSource"/>        </Context>

其中的jdbc/Testcp可以使随意的名字,path="/Testconnpool"代表你的访问路径,网上说可以在工程的META-INF目录下建立context.xml文件把上面的配置写到那里面去我试过了好像不行,再接着在你工程的web.xml文件中作如下配置:
<resource-ref>  <description>DB Connection</description>  <res-ref-name>jdbc/Testcp</res-ref-name>  <res-type>javax.sql.DataSource</res-type>  <res-auth>Container</res-auth>  </resource-ref>

但是我通过实验发现没有配置这一步也没有问题,但是配置了就一定要配置对了,jdbc/Testcp和上面的配置是一样的。
3.最后写一个JSP测试一下就可以了,下面是一个简单的测试代码:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><%@ page import = "java.sql.*" %><%@ page import = "javax.naming.*"%><%@ page import = "javax.sql.*" %><%DataSource ds = null;Context initCtx = new InitialContext();ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/Testcp");Connection conn = ds.getConnection();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("select * from article");while(rs.next()){out.println(rs.getString("title")+"<br>");}        rs.close();        stmt.close();        conn.close();%>

上面的conn.close()并没有真正的关闭连接,而是把连接返回了连接池,因为连接池创建连接的方式和DriverManager.getConnection的方式不一样。这里使用的是tomcat自带的连接池,也可以使用如dbcp,c3p0,proxypool等数据库连接池,当然也可以自己实现如果你很有信心并且不怕麻烦的话呵呵。
基本的配置完成了,但其中的原理还有待研究,JNDI方面的内容是JAVA EE的一个重点。

热点排行