您的位置:首页 > 运维架构 > Tomcat

Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

2017-02-22 14:22 801 查看
1、Tomcat 中直接使用的方法:全局的连接池 

在conf/server.xml下的<GlobalNamingResources>节点里配置resource,例如:

[xml] view plain copy <Resource name="jdbc/ens"  
      auth="Container"  
      type="javax.sql.DataSource"  
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"  
      testWhileIdle="true"  
      testOnBorrow="true"  
      testOnReturn="false"  
      validationInterval="30000"  
      timeBetweenEvictionRunsMillis="30000"  
      maxActive="100"  
      minIdle="10"  
      maxWait="10000"  
      initialSize="10"  
      removeAbandonedTimeout="60"  
      removeAbandoned="true"  
      logAbandoned="true"  
      minEvictableIdleTimeMillis="30000"  
      jmxEnabled="true"  
      jdbcInterceptors=  
"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"  
      username="root"  
      password="123"  
      driverClassName="com.mysql.jdbc.Driver"  
      url="jdbc:mysql://localhost:3306/ens"/>  

2、

然后,在context.xml文件的<Context></Context>节点中添加如下配置:[xml] view plain copy <ResourceLink global="jdbc/ens" name="jdbc/ens" type="javax.sql.DataSource"/>  

3、用JSP测试一下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.io.*,java.util.*,java.sql.*"%>

<%@ page import="javax.servlet.http.*,javax.servlet.*" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<%@page import="java.sql.Connection"%>  

<%@page import="javax.naming.Context"%>  

<%@page import="javax.naming.InitialContext"%>  

<%@page import="javax.sql.DataSource"%>  

<%@page import="java.sql.Statement"%>  

<%@page import="java.sql.ResultSet"%>  

<html>
<head>
<title> select 操作</title>
</head>
<body>
<!--
JDBC 驱动名及数据库 URL 
数据库的用户名与密码,需要根据自己的设置
useUnicode=true&characterEncoding=utf-8 防止中文乱码
-->
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
user="root"  password="Dap1234$"/>
<!--
插入数据
-->
<sql:update dataSource="${snapshot}" var="result">
INSERT INTO t_test (name,year) VALUES ('菜鸟教程移动站', 2017);
</sql:update>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from t_test;
</sql:query>
<c:forEach var="row" items="${result.rows}">
${row.id}-->${row.name}-->${row.year}--><br>
</c:forEach>
<p>
Haha
</p>

<table border='1'>
<tr>
<td>id</td>
<td>名称</td>
<td>年份</td>
</tr>
<%
Class.forName("org.gjt.mm.mysql.Driver").newInstance();    
String url ="jdbc:mysql://localhost/test?user=root&password=Dap1234$&useUnicode=true&characterEncoding=utf-8"; 
//myDB为数据库名    
Connection conn= DriverManager.getConnection(url);  
out.println(conn);
Statement ps = conn.createStatement();
ResultSet rs = ps.executeQuery("select * from t_test");
while(rs.next()){
String id = rs.getString("id");
String name = rs.getString("name");
String year = rs.getString("year");
%>
<tr>
<td><%=id%></td>
<td><%=name%></td>
<td><%=year%></td>
</tr>
<%
}
/*
import java.sql.*;     
//Class.forName("org.gjt.mm.mysql.Driver").newInstance();     
Class.forName("com.mysql.jdbc.Driver");     
//String url ="jdbc:mysql://localhost/test?user=root$&password=Dap1234$&useUnicode=true&characterEncoding=utf-8";     
String url ="jdbc:mysql://localhost:3306/test"; </pre><pre name="code" class="java">//myDB为数据库名     
Connection conn= DriverManager.getConnection(url,"root","root");      
Statement stmtNew=conn.createStatement();  
*/
%>

</table>
<p>
--------------------
</p>
<%
out.println("god");
%>

<%  

   //连接池的获取  

    Connection conn1 = null;  

    DataSource ds = null;  

    ResultSet rs1  =null;  

    Statement stmt = null;  

    Context initCtx = new InitialContext();  

    ds =(DataSource)initCtx.lookup("java:comp/env/jdbc/test");  

   if(ds!=null){  

        out.println("已经获得DataSource!");   

        out.println("<br>");  

        conn1 = ds.getConnection();  

       try{  

        stmt = conn1.createStatement();  

        String sql ="select * from t_test";  

        rs1 = stmt.executeQuery(sql);  

        out.println("以下是从数据库中读取出来的数据:<br>");  

            while(rs1.next()){  

                out.println("<br>");  

                out.println(rs1.getString("name"));  

            }  

       }catch(Exception ex){  

         ex.printStackTrace();  
out.println("有异常了!");

       }finally{  

          conn1.close();  

          rs1.close();  

          stmt.close();  

       }  

   }  

%>
</body>

</html>

参考方法五
http://blog.csdn.net/jiangbingbo123/article/details/51398011
方法七为单个web项目配置数据池
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: