一.在tomcat的conf/server.xml的GlobalNamingResources节点加入:
<!--
name:数据源名称,通常取"jdbc/xxx"的格式
type:数据源类DataSource
maxIdle:最大空闲数,数据库连接的最大空闲数,超过空闲时间,数据库连接被标记为不可用,然后被释放,设为0表示无限制
maxWait:最大建立连接等待时间,如果超过此时间将接到异常,设为-1表示无限制
maxActive:连接池的最大数据库连接数,设为0表示无限制
-->
<Resource
name="jdbc/DBPool"
auth="Container"
description="DB Connection"
type="javax.sql.DataSource"
username="****"
password=" ****"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
url="jdbc:mysql://*. * . * . * :3306/dayaInfo"
maxActive="5" />
</GlobalNamingResources>
二.在tomcat的conf/context.xml配置数据源连接,在<Context>节点中加入:
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"/>
三.在web.xml中配置
<resource-ref>
<description>mysql db connection pool</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
四.后台代码测试
package com.dayainfo.achieve; import com.dayainfo.base.BaseServlet; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.sql.DataSource; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; @WebServlet(urlPatterns = "/testDataSource", asyncSupported = true) public class BookAuthorCount extends BaseServlet { private DataSource pool = null; @Override protected void excuteQuery() throws ServletException, IOException { BookAuthorCount bookAuthorCount = new BookAuthorCount(); ResultSet rs = null; try { rs = bookAuthorCount.query("select * from authorInfo limit 0,10"); while (rs.next()) { String author=rs.getString("作者"); String refTotal=rs.getString("被引用本数"); String totalRefTimes=rs.getString("总共被引用次数"); System.out.print("作者:"+author+"\t"); System.out.print("被引用本数:"+refTotal+"\t"); System.out.println("总共被引用次数:"+totalRefTimes); } } catch (SQLException e) { e.printStackTrace(); } } public DataSource getDataSource() { Context env = null; try { env = (Context) new InitialContext().lookup("java:comp/env"); //java:comp/env指jvm虚拟机 pool = (DataSource) env.lookup("jdbc/DBPool"); //jdbc/DBPool是数据源名称 } catch (NamingException e) { e.printStackTrace(); } return pool; } public ResultSet query(String sql) throws SQLException { Connection conn = null; try { conn = getDataSource().getConnection(); } catch (SQLException e) { e.printStackTrace(); } Statement statement = null; try { statement = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); } catch (SQLException e) { e.printStackTrace(); } ResultSet rs = null; try { rs = statement.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } }