A:开发javaWeb应用,必须使用一个JavaWeb服务器,JavaWeb服务器都内置数据源,比如Tomcat(DBCP,因其中有DCBPde的jar包),数据源只需要配置服务器即可,步骤如下:
a:拷贝数据库连接的jar到tomcatlib目录下
b:配置数据源XML文件
1:如果把配置信息写到tomcat下的conf目录下的context.xml中,那么所有的应用都能使用此数据源。
2:如果是在当前应用的META-INF中创建context.xml,编写数据源,那么只有当前应用可以使用
B:Tomcat中的context.xml配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/day40_datasource" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/db1"/>
</Context>
C:在Tomcat中使用连接池代码如下:
<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%
//使用tomcat提供的数据源(连接池)
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
//通过name指明连接池使用的配置信息 JNDI
DataSource ds = (DataSource)envContext.lookup("jdbc/day40_datasource");
Connection conn = ds.getConnection();
out.print(conn);
%>
</body>
</html>
D:JNDI(Java Naming and Directory Interface):它理解为一种将对象和名字捆绑的技术,对象工厂负责生产出对象,这些对象都和唯一的名字绑在一起,外部资源可以通过名字获得某对象的引用.
E:比如在Tomcat中的context.xml中配置如下的资源
<Resource name="jdbc/day40_datasource" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/db1"/>
<Resource name="jdbc/day41_datasource" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:oracle://localhost:3306/db1"/>
<Resource name="jdbc/day42_datasource" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:sqlserver://localhost:3306/db1"/>
其中:
name 表示指定的jndi名称
auth 表示认证方式,一般为Container
type 表示数据源床型,使用标准的javax.sql.DataSource
maxActive 表示连接池当中最大的数据库连接
maxIdle 表示最大的空闲连接数
maxWait 当池的数据库连接已经被占用的时候,最大等待时间
logAbandoned 表示被丢弃的数据库连接是否做记录,以便跟踪
username 表示数据库用户名
password 表示数据库用户的密码
driverClassName 表示JDBC DRIVER
url 表示数据库URL地址
那么可以通过如下java代码来简单通过名字(DataSource)envContext.lookup(name)来查找需要连接的数据库:
<%
//使用tomcat提供的数据源(连接池)
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
//通过name指明连接池使用的配置信息 JNDI
DataSource ds = (DataSource)envContext.lookup("jdbc/day40_datasource");
Connection conn = ds.getConnection();
out.print(conn);
%>