配置Tomcat的数据库连接池

WEB开发中,有没有数据库连接池对WEB性能的影响非常大,Tomcat有自带的连接池,这一节就来配置Tomcat的连接池。

1、复制JDBC连接包

JDBC连接包mysql-connector-java-3.1.10-bin.jar复制到D:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib目录下,common/libTomcat的全局引用库的所在目录,Tomcat在启动时会自动加载这个目录中的所有JAR包。

有些网上的文章说也可以将数据库连接包复制到WEB应用的WEB-INF/lib中(本例的myweb/hello/WEB-INF/lib目录),这个目录是hello模块发布时会自动加载的一个包目录。但经笔者实验,如果连接包将放在此目录中,不用数据库连接池方式来访问数据库,则连接包可以正常使用;如果使用Tomcat连接池,则会出错误,连接包无法使用。

2、进入Tomcat的配置页面

IE浏览器输入地址:http://127.0.0.1:8080/admin/ ,打开Tomcat服务器配置的登录页面,再输入用户名admin、密码123,进入Tomcat的配置页面,如下图9.31所示:

9.31  连接池设置

单击左边的树结点“Data Source”→选择右上角的下拉框的“Create New Data Source”项,然后在表格中输入相应的连接池配置信息:

l           JNDI Namejdbc/mysql 设置连接池的JNDI名,在Java程序会用到此名。

l           Data Source URLjdbc:mysql://localhost/testdb 数据库连接字串,testdb是数据库。

l           JDBC Driver Classcom.mysql.jdbc.Driver JDBC连接类。

l           User Nameroot 数据库登录用户名。

l           Password******   数据库登录密码。本例为123

l           Max. Active Connections4   最大连接数。实际应用时,应该根据WEB使用情况设置得大一些;开发时,4个连接足够了。

l           Max. Idle Connections2   最大空闲连接数。

l           Max. Wait for Connection5000   最大等待连接限制。

l           Validation Query:验证用的查询语句,可以不填。

填写完以上信息之后,单击右下角的“Save”按钮保存修改,再单击右上角的“Commit Changes”按钮提交修改。

3、修改Tomcatserver.xml文件

server.xml文件的具体路径:C:/Program Files/Apache Software Foundation/Tomcat 5.0/conf/server.xml,在原来的<Context>项中加入一个子项< ResourceLink>

<Context path="/hello"

reloadable="true"

docBase="d:/eclipse/workspace/myweb/hello"

workDir="d:/eclipse/workspace/myweb/bin">

<ResourceLink name="jdbc/mysql"

global="jdbc/mysql"

type="javax.sql.DataSource"/>

</Context>

4、测试数据库连接池

将以下测试程序命名为test.jsp,创建在hello模块的根目录下,然后通过IE地址:http://127.0.0.1:8080/hello/test.jsp来访问。这个测试程序从数据库连接池中获得一个数据库连接对象Connection,然后再查询数据库的test表,并用test1,test2列的数据打印出来.

test.jsp源代码如下:

<%@ page contentType="text/html; charset=GBK"%>

<%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="javax.naming.*"%>

<%

Connection con=null;

Statement sm=null;

ResultSet rs=null;

try{

   InitialContext ctx=new InitialContext();

   DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");

   con = ds.getConnection();

   sm = con.createStatement();

   rs = sm.executeQuery("select * from test");

   while(rs.next())

      out.println(rs.getString("test1")+","+rs.getString("test2"));

}catch(Exception e){

    e.printStackTrace();

}finally {

    if (rs != null) {

        try {

            rs.close();

        } catch (SQLException e) {}

        rs = null;

    }

    if (sm != null) {

        try {

            sm.close();

        } catch (SQLException e) {}

        sm = null;

    }

    if (con != null) {

        try {

            con.close();

        } catch (SQLException e) {}

        con = null;

    }

}

%>

程序说明:

l           <%@ page contentType="text/html; charset=GBK"%>  这一行是设置网页的字符集,也是解决中文乱码问题的关键一句。如果是纯html页面,则应在</HEAD>项之前加入这样一句:<META http-equiv=Content-Type content="text/html; charset=GBK">

l           <%@ page import="java.sql.*"%>  这一句类似于Java中的import java.sql.*

l           ctx.lookup("java:comp/env/jdbc/mysql");  这一句中comp/env是固定不变的,jdbc/mysql是前面连接池设置的JNDI Name

l           在程序最后一定要关闭数据库连接(实际是将连接返回给连接池,并没有真正关闭),否则,很快就会因连接数耗尽,而无法再正常显示JSP页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值