Tomcat下的mysql连接池配置

本文介绍了如何在Tomcat 7.0版本中配置MySQL的连接池,提供了两种方法:一种是在Web项目的META-INF目录下创建context.xml文件,另一种是在Tomcat的conf/context.xml文件中配置。配置包括JNDI资源定义、数据库连接参数等,并强调了配置完成后需要将数据库驱动放入tomcat/lib目录并重启服务器以使配置生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例使用的Tomcat版本为7.0

  首先,需要为数据源配置一个JNDI资源。 我们的数据源JNDI资源应该定义在context元素中。 在tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个context.xml文件中。因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。 我们当然推荐把应用需要的JNDI资源配置在context.xml文件中,而不是server.xml文件中。

 

方法一:在Web项目中的META-INF目录下新建一个文件context.xml,写入配置

注意:是META-INF目录下,不是WEB-INF目录下

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

<Context>

    <Resource name="jdbc/qq"

        auth="Container"

        type="javax.sql.DataSource"

        username="root"

        password="root"

        maxIdle="30"

        maxWait="10000"

        maxActive="100"

        driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://127.0.0.1:3306/"+”databaseName”

        logAbandoned="true"

</Context>

注:name="jdbc/mysqlds"随便取;

配置好后需要注意的两个步骤

1.将对应数据库的驱动类放到tomcat/lib目录

2.重新启动tomcat服务器,让配置生效

web应用程序的WEB-INF/web.xml中设置数据源参考,如下:

<web-app></web-app>节点中加入下面内容:(放在servlet映射配置之后)

<resource-ref>
      <description>mysql数据库连接池</description>
      <!-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 -->
      <res-ref-name>jdbc/qq</res-ref-name>
      <!-- 资源类型 -->
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

 

编写jsp文件测试,不能用java测试,连接池需要通过服务器管理。

<%@ page language="java"contentType="text/html;charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"

    import="javax.naming.*,javax.sql.DataSource,java.sql.*"%>

<!DOCTYPEhtmlPUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1">

<title>JNDI</title>

</head>

<body>

<%    

try{

 

Context ctx = new InitialContext();

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

 

if (ds == null) {

    System.out.println("数据连接打开错误");

 

}

Connection con =ds.getConnection();

if (con == null) {

    System.out.println("数据连接打开错误");

}

Statement st =con.createStatement();

String sql = "select * from qq.users";

ResultSet rs =st.executeQuery(sql);

while (rs.next()) {

    out.println(rs.getString(1) + " " + rs.getString(2)+"<br/>");

}

 

} catch (Exception e) {

e.printStackTrace();

} %>

 

</body>

</html>

 

 

 

 

方法二: 在Tomcat的conf/context.xml中配置


在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下:

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

<Context>

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>

配置连接池

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

<Context>

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

  

    <!--配置mysql数据库的连接池,

        需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下       

        maxIdle连接池中最多可空闲maxIdle个连接

        minIdle连接池中最少空闲maxIdle个连接

        initialSize初始化连接数目

        maxWait连接池中连接用完时,新的请求等待时间,毫秒

        username数据库用户名

        password数据库密码

        -->

    <Resource name="jdbc/qq"

        auth="Container"

        type="javax.sql.DataSource"

        username="root"

        password="root"

        maxIdle="30"

        maxWait="10000"

        maxActive="100"

        driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://127.0.0.1:3306/ " +”databaseName”/>

 

</Context>

 

同方法一类似,

1.将对应数据库的驱动类放到tomcat/lib目录

2.重新启动tomcat服务器,让配置生效

web应用程序的WEB-INF/web.xml中设置数据源参考,如下:

<web-app></web-app>节点中加入下面内容:(放在servlet映射配置之后)

配置<resource-ref>
运行结果图:


 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值