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输出
恐惧源于无知,代码改变世界