分类: 系统运维
2009-04-26 23:19:28
----------------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://dreamlcr.cublog.cn/
----------------------------------------------------
本文主要是介绍在Tomcat 6.0中连接池和数据源的使用,通过连接池可以提升系统的性能,在开发中较为常用。
第一种配置方法:适用于B/S模式。
第一:将jdbc驱动的jar包,如:MySQL、Oracle的jdbc驱动,拷贝到tomcat中lib下。
注意:必须是tomcat中lib下,如:D:\Tomcat 6.0\lib,但不能是项目中的WEB-INF/lib下,因为这时tomcat解析不到此类目录。
第二:这里有两种方法:
1、在tomcat中conf下的context.xml文件中
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dream"
username="root"
password="lcr"
maxActive="100"
maxIdle="10"
maxWait="10000" />
2、在tomcat中conf下的server.xml文件中
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dream"
username="root"
password="lcr"
maxActive="100"
maxIdle="10"
maxWait="10000" />
注意:这两种方法是有区别的。
第一种方法是针对整体全局的,即对于tomcat中webapps下的所有项目都是有效的,但是对于外接服务器方式是不适用的;
第二种方法是针对部分局部的,即只是对于
第三:在项目中WEB-INF/web.xml文件中加入这样的配置:
当然,这一部分也是可以省略的,有与没有都是可以的。
第四:这时候就可以用了。
Connection conn = null;
try {
// 初始化查找命名空间
Context ctx = new InitialContext();
// 查找到 DataSource
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/dream");
// 取得一个数据库连接
conn = ds.getConnection();
System.out.println(conn);
} catch (Exception e) {
System.out.println(e);
// e.printStackTrace();
}
建议和说明:
这种连接池,一般不推荐用,因为我们开发的成品大都运行在租用的服务器上,所以我们便改不了tomcat服务器的配置了,再说容器也不一定是tomcat,比如:resin和jboss等等,怎么办?而且这种连接池还有些限制,只可以在web下面用!
鉴于此,我们经常用外部包来实现连接池的功能。
第二种配置方法:适用于C/S和B/S模式
第一:jdbc驱动包、commons-dbcp-1.2.2.jar 和commons-pool-1.3.jar。
第二:在src下新建一个Properties文件:dbcp.properties,在里面写下这样的配置:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/dream
username=root
password=lcr
defaultAutoCommit=true
initialSize=10
maxActive=100
maxIdle=10
maxWait=10000
#validationQuery=select count(*) as count from person
第三:这时候就可以用了。
import java.sql.Connection;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBCPProvider {
private static String PROPERTIES_FILE = "/dbcp.properties";
private BasicDataSource ds = null;
Connection conn = null;
private DBCPProvider() {
Properties prop = new Properties();
try {
prop.load(this.getClass().getResourceAsStream(PROPERTIES_FILE));
ds = (BasicDataSource) BasicDataSourceFactory .createDataSource(prop);
conn = ds.getConnection();
System.out.println(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String agrs[]) {
new DBCPProvider();
}
}
这种配置方法比起tomcat自带的连接池是不是好用多了啊?呵呵。而且它的优点是B/S和C/S都可以用。