tomcat7下JDNI连接池的配置
建立数据库连接是非常耗时耗资源的行为,因此一般服务器像Tomcat,Weblogic等都提供了数据库连接池功能。下面介绍在Tomcat7下如何进行配置连接池(不同版本的tomcat服务器配置略有不同)。
首先,在tomcat的context.xml文件中配置:
<Resource name=”jdbc/test”auth=driverClassName=”com.mysql.jdbc.Driver”url=”jdbc:mysql://localhost:3306/test”username=”root”password=”root”maxActive=”100″maxIdle=”30″maxWait=”10000″/><ResourceLink />
接着在web.xml中对其进行引用:
>jdbc/test>Container</res-auth></resource-ref>
注:注意其与tomcat要相适应
编写测试类:
package jnditest;import java.sql.Connection; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; {private static Connection conn;public static Connection getConn(){try{Context ctx = new InitialContext();DataSource ds =(DataSource)ctx.lookup(“java:comp/env/jdbc/test”);System.out.println(ds);conn = ds.getConnection();}catch(Exception e){e.printStackTrace();}return conn;} }
在webContent下建立main.jsp文件:
<%@ page language=”java” contentType=”text/html; charset=UTF-8″pageEncoding=> =>测试JNDI连接> <% ConnectionPool conn = new ConnectionPool(); Connection conns = conn.getConn(); if(null!=conns){out.println(“数据库连接状态:<b>OK</b><hr />”);PreparedStatement pst = conns.prepareStatement(“SELECT * FROM STUDENT”);ResultSet rs = pst.executeQuery();while(rs.next()){int id =rs.getInt(“ID”);String name = rs.getString(“NAME”);out.println(“<b>id:</b>”+id+”<br /><b>姓名:</b>”+name+”<br /><b>性别:</b>”+”<br />”+”<hr />”);} }else{out.println(“数据库连接状态:NO”); } %> </body> </html>
最后,注意要将MySQL的驱动包加入到tomcat下的lib目录中。
配置完毕,在MySQL下建立表:
..`student` ( , , PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入几条数据,启动服务器,,输入URL地址,测试结果如下:
数据库连接状态:OK id:1 姓名:张三 性别: id:2 姓名:李四 性别: id:3 姓名:王五 性别:
注:
应还在tomcat的conf\Catalina\localhost目录下建立一份名称 与web名相同内容与context.xml相同的文件,否则会出现 org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create *JDBC driver of class ” for connect URL’null’异常,可能是由于tomcat(可能由于权限或者配置问题)无法将context.xml文件写入到conf\Catalina\localhost中的原因。
别人失去了信心,他却下决心实现自己的目标。