一.在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;
}
}