tomcat7下JDNI连接池的配置

来源:互联网 发布:java工程师工资待遇 编辑:程序博客网 时间:2024/05/16 16:04

tomcat7下JDNI连接池的配置

建立数据库连接是非常耗时耗资源的行为,因此一般服务器像Tomcat,Weblogic等都提供了数据库连接池功能。下面介绍在Tomcat7下如何进行配置连接池(不同版本的tomcat服务器配置略有不同)。

首先,在tomcat的context.xml文件中配置:

     <Resource name="jdbc/test"         auth="Container"         type="javax.sql.DataSource"         driverClassName="com.mysql.jdbc.Driver"         url="jdbc:mysql://localhost:3306/test"         username="root"        password="root"         maxActive="100"         maxIdle="30"         maxWait="10000"/>    <ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/> 

接着在web.xml中对其进行引用:

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

注:注意其与tomcat要相适应

编写测试类:

package jnditest;import java.sql.Connection;  import javax.naming.Context;  import javax.naming.InitialContext;  import javax.sql.DataSource;  public class ConnectionPool {      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="UTF-8"%>  <%@ page import="jnditest.ConnectionPool,java.sql.Connection,java.sql.*" %>  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <title>测试JNDI连接</title>  </head>  <body>  <%  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下建立表:

DROP TABLE IF EXISTS `test`.`student`;CREATE TABLE  `test`.`student` (  `id` int(11) NOT NULL,  `name` varchar(20) DEFAULT NULL,  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中的原因。

1 0
原创粉丝点击