Tomcat下使用c3p0配置jndi数据源

一.配置jndi需要的架包为

c3p0-0.9.2-pre1.jar和mchange-commons-0.2.jar

已经mysql连接包mysql-connector-java-5.1.26.jar

下载地址为:

二.将如下架包导入到项目WEB-INF/lib目录下

然后再在META-INF目录下新建一个context.xml文件

然后context.xml的内容为

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- 使用C3P0配置针对MySQL数据库的JNDI数据源 -->
   <!-- 注意jdbc/mysql和Container这两个在web.xml需要配置 需要名称一致 然后就是数据库用户和密码--> <Resource name="jdbc/mysql" auth="Container" factory="org.apache.naming.factory.BeanFactory" type="com.mchange.v2.c3p0.ComboPooledDataSource" driverClassName="com.mysql.jdbc.Driver" idleConnectionTestPeriod="60" maxPoolSize="50" minPoolSize="2" acquireIncrement="2" user="root" password="zhousong" jdbcUrl="jdbc:mysql://localhost:3306/mysql1"/> </Context>

然后再web.xml中添加

<resource-ref>
    <res-ref-name>jdbc/mysql</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

最后创建一个servlet进行测试

package C3p0DemoTest;

import java.io.IOException;
import java.sql.Connection;

import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

public class C3p0Demo extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //C3p0在项目中的实现 Context.xml的存储路径在con文件的localhost里面 是对Context的整个配置
        //也是实现C3p0连接池的方法 
        try {
            /*
             * 创建JNDI上下文获取对象
             */
            /*
             * 查询入口
             */
            InitialContext ctx = new InitialContext();
            //lookup检索配置。
            DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
            //获取连接
            Connection con = ds.getConnection();
            
            System.out.println(con);
            
            System.out.println("ok");
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

}

然后在浏览器输入

http://localhost:8080/项目名称/C3p0Demo

可以在后台看到类的连接情况和ok输出

 

posted @ 2018-05-29 21:16  coder-zhou  阅读(547)  评论(0编辑  收藏  举报