03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池



DBCP数据源

使用DBCP数据源,需要导入两个jar包

Commons-dbcp.jar:连接池的实现

Common-pool.jar:连接池实现的依赖库。

 

导入mysql的jar包。

 

DBCP核心API

BasciDataSource  
它可以通过实例化对象的方式获得一个对象。

它里面有如下方法:

setDriverClassName(String driverClassName)
设置驱动类的名称。

setInitialSize(int initialSize)
设置初始化时的链接数目。

setMaxActive(int maxIdle)
设置最大的并发访问数量。

setMaxIdle(int maxIdle):
设置最大的闲置数目。

setPassword:用于设置密码。

setUrl:设置url

setUsername:设置用户名。

 

 

数据源实现BasicDataSourceFactory  
用于创建数据源的工厂类,

 

不设配置文件时使用BasicDataSource的程序的写法:

package cn.toto.utils;

 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.sql.DataSource;

 

import org.apache.commons.dbcp.BasicDataSource;

 

public
class JdbcUtils {

   
private JdbcUtils(){}

   
//定义BasicDataSource的父类接口的形式,获得ds的参数。

   
private
static DataSource
ds;

   

   
static {

          
//要想使用写好的数据源的功能,得先初始化一个dbcp连接池

          
BasicDataSource bds = new BasicDataSource();

          

          
//设置一系列参数

          
bds.setDriverClassName("com.mysql.jdbc.Driver");

          
bds.setUrl("jdbc:mysql://localhost:3306/day14");

          
bds.setUsername("root");

          
bds.setPassword("123456");

          

          
//设置初始化大小

          
bds.setInitialSize(5); //初始时设置5个连接数

          
bds.setMaxActive(20);//设置并发访问数目。

          
//bds.setMaxWait(0);//设置最大等待时间。不等待。

          

          
ds = bds; 
//获得数据是通过父接口的DataSource接口。

   
}

   
//获得连接池

   
public
static DataSource getDataSource(){

      
return
ds;

   
}

 

   

   
//获得与指定数据库的连接

   
public
static Connection getConnection()
throws SQLException{

      
//从连接池返回一个连接  

      
return
ds.getConnection();

   
}

   

   
public
static
void release(ResultSet rs,Statement stmt,Connection conn){

      
if(rs!=null)
{

   
       try{

             
rs.close();

          
}catch(SQLException e){

             
e.printStackTrace();

          
}

          
rs = null;

      
}

      
if(stmt!=null){

          
try{

             
stmt.close();

          
}catch(SQLException e){

             
e.printStackTrace();

          
}

          
stmt = null;

      
}

      
if(conn!=
null) {

          
try{

             
conn.close();

          
}catch(SQLException e){

             
e.printStackTrace();

          
}

          
conn = null;

      
}

   
}

}

 

用于验证的主函数的写法:

package cn.toto.demo;

 

import java.sql.Connection;

import java.sql.SQLException;

 

import cn.toto.utils.JdbcUtils;

 

public
class Demo {

 

   
public
static
void main(String[] args)
throws SQLException {

      

      
for(int
i=0;i<30;i++){

          
Connection conn = JdbcUtils.getConnection();//如果只写这句,程序将一直等待执行。

          
System.out.println(conn);//不写下面一句时,打印输出,验证是否有20条,结果是20条

          

          
conn.close();//用一个放回一个,加上这一句之后将出现30条数据。

      
}

   
}

 

}

 

在文档中还有一个方法:

org.apache.commons.dbcp

Class BasicDataSourceFactory它里面有一个这样的方法:

createDataSource(Properties properties)

          Creates andconfigures a BasicDataSourceinstance
based on the given properties.

它是根据Properties,根据properties中的信息获得信息。

配置dbcp的配置文件的方法是:找到文档中的Configuration,里面有多个属性。

在src下面编写一个一个配置文件config.properties

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/day14

username=root

password=123456

initialSize=5

maxiActive=20

 

通过配置文件的方式获得的数据源的源码是:

package cn.toto.utils;

 

import
java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

 

import javax.sql.DataSource;

 

import
org.apache.commons.dbcp.BasicDataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

 

public
class JdbcUtils {

   
private JdbcUtils() {

   
}

 

   
//
定义BasicDataSource的父类接口的形式,获得ds的参数。

   
private
static DataSource
ds;

 

   
static {

      
try {

          
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream(

                 
"config.properties");//通过类加载的方式获得获得配置文件的流

          
Properties prop = new Properties();

          
prop.load(in);//通过流将配置项加载进来。

          
//通过工厂类读取

          
ds = BasicDataSourceFactory.createDataSource(prop);

      
} catch (Exception e) {

          
throw
new ExceptionInInitializerError();

      
}

   
}

 

   
//
获得连接池

   
public
static DataSource getDataSource() {

      
return
ds;

   
}

 

   
//
获得与指定数据库的连接

   
public
static Connection getConnection()
throws SQLException {

      
//
从连接池返回一个连接

      
return
ds.getConnection();

   
}

 

   
public
static
void release(ResultSet rs, Statement stmt, Connection
conn) {

      
if (rs !=
null) {

          
try {

             
rs.close();

          
} catch (SQLException e) {

             
e.printStackTrace();

          
}

          
rs = null;

      
}

      
if (stmt !=
null) {

          
try {

             
stmt.close();

          
} catch (SQLException e) {

             
e.printStackTrace();

          
}

          
stmt = null;

      
}

      
if (conn !=
null) {

          
try {

             
conn.close();

          
} catch (SQLException e) {

             
e.printStackTrace();

          
}

          
conn = null;

      
}

   
}

}

时间: 2024-10-31 23:00:36

03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池的相关文章

java-JAVA反射中,依赖JAR包的加载问题

问题描述 JAVA反射中,依赖JAR包的加载问题 我现在在使用JAVA的反射功能,但我的主程序和需要反射的CLASS不在同一个目录,所以当我反射的CLASS中使用到需要依赖的JAR包时,会加载不到,依赖的JAR包已经放到反射目录中了.请问有没有什么办法可以加载到这些依赖的JAR包.

eclipse自动部署web项目时WEB-INF\lib目录下缺少maven依赖jar包

右键点击工程,属性(properties),选择deployment assembly选项,单击add按钮,如下图: 在弹出的对话框选择java build path entries next后选择Maven Dependencies即可 参考文章: http://www.thinksaas.cn/group/topic/337249/   本文出自 "点滴积累" 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1690478

myeclipse8.5中ssh整合需要jar包

问题描述 在myeclipse8.5中struts2.1+spring2.5+hibernate3.2整合需要那些jar包?struts和spring的结合包应该用那个?谢谢各位! 解决方案 解决方案二:给你个链接:http://ajava.org/course/open/12486.html很详细.希望能帮助到你!解决方案三:各种jar包,数据库,帮助API文档,可到javakt.com,有专家免费提供解决方案四:直接用myeclipse导入解决方案五:sttuts与spring整合需要str

如何让jboss eap 6.2+ 的多个war应用共享 jar 包?

weblogic有一个很贴心的功能,允许把多个war应用共同依赖的jar包,打包一个单独的war,以libary方式部署,然后各应用在weblogic.xml里声明引用该libary即可,这样可大大减少打包后的war文件尺寸,可以加快部署的上传进度,对web server而言,这类共用jar包只加载一次,也节省资源. 但是jboss下想达到类似的功能就要复杂很多了,先来一个简单的示例: 一.基础篇 1.1 假如我们先开发了一个工具库,打包后生成的mylib.jar ,为了减少各种依赖项的干扰,这

图片-getHttpBitmap是哪个jar包

问题描述 getHttpBitmap是哪个jar包 android中获得网络图片时用到 Bitmap bitmap =getHttpBitmap(url); 可是getHttpBitmap是哪个jar包我网上找了好久都没有,急急急! 解决方案 hibernate jar包Hibernate中各个JAR包的用途spring依赖jar包 解决方案二: package com.android.antking.imageview; import java.io.InputStream; import j

java-spring mvc 文件上传 找不到jar包,已知的都添加了,大神来看看

问题描述 spring mvc 文件上传 找不到jar包,已知的都添加了,大神来看看 ! 解决方案 没有build到项目中把jar包,你只是直接把jar粘到了lib目录下 解决方案二: 上面有句话是这样说的··········java .lang.NoClassFounderror: org/apache/commns/fileupload/FileItemfactory 我个人认为是这个jar包里没有哪个类里所请求的FileItemfactory 来提供创建文件工厂对象 解决方案三: 错误信息

Java源代码打成可执行jar包后连接不上sql2000数据库。在eclipse里能连上。求大神帮助,感谢

问题描述 因目前在手机中发的贴,无法贴图.不知各位大神是否遇到过这情况.. 解决方案 解决方案二:没有错误信息,很难判断什么问题解决方案三:你的包中有没有将sqlserver的驱动包一起打包进去,如果没有一起打包进去的话,那你运行的时候需要带上-cp参数,并将驱动jar带上.解决方案四:打的jar包中有一个META-INFMANIFEST.MF文件,其中有一个class-path属性,这个属性后面跟上要依赖的jar包的路径和名称就可以了,如果跟当前执行jar在同一个目录下面,那么class-pa

eclipse 导入jar包出现Could not find class

问题描述 eclipse 导入jar包出现Could not find class 我将我的项目打包成jar,导入后出现找不到class.求教大神们. 我的打包方法: 项目右键 -> export jar,然后操作如下图然后一路往下.添加包是直接将jar拷贝到libs,build path添加.但是现在点击调用jar包里面的文件时出现如下错误 09-17 16:35:19.311: E/hahahahha(4247): 21fe82cdac8539317a53b87e1ba7873e 09-17

可运行jar包的几种打包/部署方式

java项目开发中,最终生成的jar,大概可分为二类,一类是一些通用的工具类(不包含main入口方法),另一类是可直接运行的jar包(有main入口方法),下面主要讲的是后者,要让一个jar文件可直接运行,通常有几下三种方式: 动工之前,先搭一个项目架子便于后面分析: 项目结构图:  这是一个gradle项目(当然,也可以换成ant项目或maven项目,这不重要),里面有二个模块,my-jar的DemoApp里提供了main入口方法,通常一个可运行的java项目,都会依赖其它一些jar包,所以另