首先,在web应用的META-INF下新建context.xml文件,配置数据源。
context.xml的语法格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="DBpool"
type="javax.sql.DataSource"
auth="Container"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/taobao"
username="root"
password="123456"
maxActive="5"
maxIdle="2"
maxWait="6000"
/>
</Context>
name 设置数据源的JNDI名
type 设置数据源的类型
auth 设置数据源的管理者,有两个可选值
Container和Application,
Container表示由容器来创建和
管理数据源,Application表示由Web
应用程序来创建和管理数据源。
driverClassName 设置连接数据库的JDBC驱动程序
url 设置连接数据库的路径名
username 设置连接数据库的用户名
password 设置连接数据库的密码
maxActive 设置连接池中处于活动状态的数据库连接的最大数目,0表示不受限制
maxIdle 设置连接池中处于空闲状态的数据库连接的最大数目,0表示不受限制
maxWait 设置当连接池中没有处于空闲状态的连接时,请求数据库连接所需的最长等待时间(单位ms),如果超出该时间将抛出异常,-1表示无限制等待。
然后,用JNDI 访问数据库连接池。
package database;
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource;
public class DataBase { private Connection c ; private Statement s ; public DataBase() throws SQLException { try{ Context ctx = new InitialContext(); ctx = (Context)ctx.lookup("java:comp/env"); DataSource ds = (DataSource)ctx.lookup("DBpool"); c = ds.getConnection(); System.out.println("ttttttttttttttttt"); } catch(NamingException e) { e.printStackTrace(); } s = c.createStatement(); System.out.println("数据库连接成功!"); } public Connection getC() { return c; } public void setC(Connection c) { this.c = c; } public Statement getS() { return s; } public void setS(Statement s) { this.s = s; } public ResultSet getResult(String sql) throws SQLException{ return s.executeQuery(sql); } public int upData(String sql) throws SQLException { System.out.println("更新用户数据!"); return s.executeUpdate(sql); } public void close() throws SQLException{ s.close(); c.close(); } }
数据池连接时,驱动程序要导入到tomcat中。