精华内容
下载资源
问答
  • DBCP

    2015-08-13 15:28:12
    本词条缺少概述、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 中文名 数据库连接池 外文名 DBCP(DataBase Connection Pool) 目录 1DBCP ...


    收藏
    165
    76

    DBCP编辑

    本词条缺少 概述名片图,补充相关内容使词条更完整,还能快速升级,赶紧来 编辑吧!
    中文名
    数据库连接池
    外文名
    DBCP(DataBase Connection Pool)

    目录

    1DBCP

    2DBCP 实现

    1DBCP编辑

    DBCP(DataBase connection pool), 数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时 耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

    2DBCP 实现编辑

    dbcp  连接池
    class JdbcUtil
    {
    private static BasicDataSource bds;
    static
    {
    if(bds==null)
    {
    bds= new BasicDataSource();
    }
    //分别设置数据库的连接参数
    bds.setDriverClassName();
    bds.setUrl();
    bds.setUsername();
    bds.setPassword();
    }
    public static Connection getConnection()
    {
    return bds.getConnection();
    }
    在spring中配置dbcp:
    beans.xml:
    <bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <value>classpath:jdbc.properties</value>
    </property>
    </bean>
    <bean id="dataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    </bean>
    jdbc.properties://放在classpath下
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/数据库名
    jdbc.username=root
    jdbc.password=********
    收藏
    165
    76

    DBCP编辑

    本词条缺少 概述名片图,补充相关内容使词条更完整,还能快速升级,赶紧来 编辑吧!
    中文名
    数据库连接池
    外文名
    DBCP(DataBase Connection Pool)

    目录

    1DBCP

    2DBCP 实现

    1DBCP编辑

    DBCP(DataBase connection pool), 数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时 耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

    2DBCP 实现编辑

    dbcp  连接池
    class JdbcUtil
    {
    private static BasicDataSource bds;
    static
    {
    if(bds==null)
    {
    bds= new BasicDataSource();
    }
    //分别设置数据库的连接参数
    bds.setDriverClassName();
    bds.setUrl();
    bds.setUsername();
    bds.setPassword();
    }
    public static Connection getConnection()
    {
    return bds.getConnection();
    }
    在spring中配置dbcp:
    beans.xml:
    <bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <value>classpath:jdbc.properties</value>
    </property>
    </bean>
    <bean id="dataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    </bean>
    jdbc.properties://放在classpath下
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/数据库名
    jdbc.username=root
    jdbc.password=********
    展开全文
  • dbcp

    2018-11-11 15:35:17
    1、 nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/... 缺少commons-pool2.jar(commons-dbcp2-2.5.0.jar 搭配commons-pool2-2.6.0.jar) 2、Failed to convert p...
    1、 nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/SwallowedExceptionListener
    	缺少commons-pool2.jar(commons-dbcp2-2.5.0.jar 搭配commons-pool2-2.6.0.jar)
    2、Failed to convert property value of type 'java.lang.String' to required type 'java.sql.Driver' for property 'driver'
    	dbcp2 使用driverClassName而且maxActive也没有了
    3、java.lang.UnsupportedOperationException: Manual close is not allowed over a Spring managed SqlSession
    	因为和spring整合把会话的关闭交给了spring,所以不能自己关闭,在相关的类上去掉即可。
    

    dbcp2配置文件

    展开全文
  • 在使用DBCP的时候,由于老师上课时只用了两个jar包,一个dhcp的jar包,一个pool的jar包,我在使用最新的jar包的时候,也只下载了这两个jar包,在实际应用测试的时候,却发现只有这两个不行,会报错。如下: 研究...

    在使用DBCP的时候,由于老师上课时只用了两个jar包,一个dhcp的jar包,一个pool的jar包,我在使用最新的jar包的时候,也只下载了这两个jar包,在实际应用测试的时候,却发现只有这两个不行,会报错。如下:
    这里写图片描述
    研究报错,可以发现,缺少一个commons-logging的东西,后来查询才知道,需要一个commons-logging.jar包,这个jar包Apache官网可以下载
    传送门:https://commons.apache.org/proper/commons-logging/download_logging.cgi
    下载下来并在项目中引用这个jar包,再运行,即可解决问题。

    2017/8/28
    Slicenfer

    展开全文
  • 在网上查找错误的原因,说是缺少了一个commons-pool.jar文件 在myeclipse的安装目录下搜索,得到这个文件.放进lib文件夹. 数据库连接需要一个Jar包,连接池DBCP需要两个Jar包,都需要放在项目的webroot下的lib包...
    • 使用传统的数据库连接方式,有以下缺点
      在这里插入图片描述
      所以我们使用连接池来优化数据库连接,其原理如下。每次的连接不是直接和数据库进行交互,而是从连接池里面拿,这样减少了和数据库交互的次数,提高了效率
      在这里插入图片描述

    现在很多WEB服务器(Weblogic, WebSphere, Tomcat)都提供了DataSoruce的实现,即连接池的实现。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现

    • DBCP 是 Apache 软件基金组织下的开源连接池实现,使用DBCP数据源,应用程序应在系统中增加如下两个 jar 文件:
      Commons-dbcp.jar:连接池的实现
      Commons-pool.jar:连接池实现的依赖库
      Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用
    • 第一种连接方式:;使用连接池和属性配置文件来连接数据库。这里属性配置文件里面写数据库连接的URL,账号,密码等,然后通过反射机制加载到类中,从而连接数据库
    • 创建一个类,类里面实现数据库的连接与断开
    package com.z.JdbcUtils;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    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.BasicDataSourceFactory;
    public class Jdbc {
    	private static DataSource ds;
    	static{
    		try {
    			Properties pro=new Properties();//加载属性配置文件
    			InputStream in=Jdbc.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");//读文件
    			pro.load(in);//加载,发生关系
    			//创建一个基本的数据源工厂
    			BasicDataSourceFactory bdsf=new BasicDataSourceFactory();
    			ds=bdsf.createDataSource(pro);
    		} catch (Exception e) {
    			throw new ExceptionInInitializerError(e);
    		}
    	}
    	public static Connection getConnection() throws SQLException{
    			return ds.getConnection();
    	}
    	
    	//从数据库连接池里面获取链接
    	public static void main(String[] args) throws SQLException {
    		System.out.println(getConnection());
    	}
    	//关闭数据库,此时这的关闭不是真正的关闭链接,而是归还到池中
    	public static void close(ResultSet rs,Statement st,Connection con){
    		try {
    			if(rs!=null) rs.close();
    		} catch (SQLException e) {
    			throw new RuntimeException();
    		}finally{
    			try {
    				if(st!=null) st.close();
    			} catch (SQLException e) {
    				throw new RuntimeException();
    			}finally{
    				try {
    					if(con!=null) con.close();
    				} catch (SQLException e) {
    					throw new RuntimeException();
    				}
    			}
    		}
    	}
    }
    
    
    • 创建属性配置文件,配置路径,密码,账号,连接池最小连接数,最大连接数等
    
    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test
    password=
    username=root
    initialSize=10
    maxActive=50
    maxIdle=20
    minIdle=5
    maxWait=60000
    
    • 运行如果报的错误是java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
      在网上查找错误的原因,说是缺少了一个commons-pool.jar文件
      在myeclipse的安装目录下搜索,得到这个文件.放进lib文件夹.
      在这里插入图片描述
      数据库连接需要一个Jar包,连接池DBCP需要两个Jar包,都需要放在项目的webroot下的lib包底下。
      在这里插入图片描述
    • 第二种连接方式:通过Tomcat访问页面时,从连接池里面获得连接。
    • 先把上一种方法中提出的那三个Jar包放到Tomcat下的lib目录下。
    D:\Tomcat6.0\lib
    

    在D:\Tomcat6.0\conf下的server.xml中配置

      <Context path="/toncatdbcp">
                         <Resource name="jdbc/datasource"
                         auth="Container"
                         username="root"
                         password=""
                         driverClassName="com.mysql.jdbc.Driver"
                         url="jdbc:mysql://localhost:3306/test"
                         maxActive="8"
                         maxIdle="4" />
               </Context>
    

    在这里插入图片描述
    写Jdbc

    package com.z.dbcp;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    public class Jdbc {
    	private static DataSource ds;
    	static{
    		try {
    			//创建一个大容器
    			Context initCtx = new InitialContext();
    			//创建一个子容器
    			Context envCtx = (Context) initCtx.lookup("java:comp/env");
    			//获取链接池资源,就是连接池对象
    			ds=(DataSource) envCtx.lookup("jdbc/datasource");
    		} catch (NamingException e) {
    			throw new ExceptionInInitializerError(e);
    		}
    	}
    	public static Connection getConnection() throws SQLException{
    			return ds.getConnection();
    	}
    	
    	//从数据库连接池里面获取链接
    	public static void main(String[] args) throws SQLException {
    		System.out.println(getConnection());
    	}
    	//关闭数据库,此时这的关闭不是真正的关闭链接,而是归还到池中
    	public static void close(ResultSet rs,Statement st,Connection con){
    		try {
    			if(rs!=null) rs.close();
    		} catch (SQLException e) {
    			throw new RuntimeException();
    		}finally{
    			try {
    				if(st!=null) st.close();
    			} catch (SQLException e) {
    				throw new RuntimeException();
    			}finally{
    				try {
    					if(con!=null) con.close();
    				} catch (SQLException e) {
    					throw new RuntimeException();
    				}
    			}
    		}
    	}	
    }
    
    
    • x写servlet测试
    package com.z.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.SQLException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.z.dbcp.Jdbc;
    public class JdbcServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    	}
    	@Override
    	protected void service(HttpServletRequest resquest, HttpServletResponse response)
    			throws ServletException, IOException {
    		try {
    			Connection con=Jdbc.getConnection();
    			System.out.println(con);
    		} catch (SQLException e) {
    			
    			e.printStackTrace();
    		}
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    	}
    }
    

    这种方式没次都需要重启服务器,而且server.xml里面的项目名是写死的,每次都需要改,所以特别不方便,不推荐使用。

    • 第三种方式:
      1,还是把那三个Jar包放到Tomcat的lib下面,供所有项目访问,不过也可以放到自己的项目lib下面,这样的话只有你自己才能用。
      2,在webroot下的MEAT-INF下创建context.xml文件,在里面配置数据库连接
      在这里插入图片描述
    <Context>
    		<Resource name="jdbc/datasource" 
    		auth="Container"
            type="javax.sql.DataSource"
            username="root" 
    		password=""
         	driverClassName="com.mysql.jdbc.Driver" 
           	url="jdbc:mysql://localhost:3306/test"
           	maxActive="8" 
    		maxIdle="4"/>	
    </Context>
    

    3,做jdbc

    package com.z.dbcp;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    public class Jdbc {
    	private static DataSource ds;
    	static{
    		try {
    			//创建一个大容器
    			Context initCtx = new InitialContext();
    			//创建一个子容器
    			Context envCtx = (Context) initCtx.lookup("java:comp/env");
    			//获取链接池资源,就是连接池对象
    			ds=(DataSource) envCtx.lookup("jdbc/datasource");
    		} catch (NamingException e) {
    			throw new ExceptionInInitializerError(e);
    		}
    	}
    	public static Connection getConnection() throws SQLException{
    			return ds.getConnection();
    	}
    	
    	//从数据库连接池里面获取链接
    	public static void main(String[] args) throws SQLException {
    		System.out.println(getConnection());
    	}
    	//关闭数据库,此时这的关闭不是真正的关闭链接,而是归还到池中
    	public static void close(ResultSet rs,Statement st,Connection con){
    		try {
    			if(rs!=null) rs.close();
    		} catch (SQLException e) {
    			throw new RuntimeException();
    		}finally{
    			try {
    				if(st!=null) st.close();
    			} catch (SQLException e) {
    				throw new RuntimeException();
    			}finally{
    				try {
    					if(con!=null) con.close();
    				} catch (SQLException e) {
    					throw new RuntimeException();
    				}
    			}
    		}
    	}	
    }
    

    4,测试同上面的测试方法。

    使用这种方法有个好处就是不用重启服务器,而且也可以在context.xml里面写入oracle的数据库连接,想要连接的时候直接在下图红色位置吧oracle的连接名字写进去,或者想要用哪个类的时候,直接在这个文件里面拿,也是非常的方便

    在这里插入图片描述
    上面三种方式还用到了JNDI技术

    JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于Java SE中的javax.naming包,
    这套API的主要作用在于:它可以把Java对象放在一个容器中(JNDI容器),并为容器中的java对象取一个名称,以后程序想获得Java对象,只需通过名称检索即可。
    其核心API为Context,它代表JNDI容器,其lookup方法为检索容器中对应名称的对象。JNDI的出现,让程序员和数据库的耦合降低!

    展开全文
  • 使用dbcp数据库连接池时报错java.lang.NoClassDefFoundError: org/apache/commons/pool2/PooledObjectFactory原因:缺少commons-pool2-2.4.2.jarcommons-dbcp2-2.1.1.jar 本文转自爱情89757 51CTO博客,原文链接...
  • commons-dbcp-1.2.jar包是一款主流的数据库连接池之一(DBCP,c3p0,proxool),如果缺少了这个commons-dbcp.jar包,那将无法对数据库连接池进行正常使用,需要此款commons-dbcp-1.2.jar包的朋友们欢迎前来下载使用。...
  • IDEA中的DBCP使用及问题解决

    千次阅读 2018-08-24 19:04:17
    DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:commons-dbcp.jar,commons-pool.jar和commons-connections.jar,由于...
  • //需要引用的jar包有4个,分别是commons-pool2-2.4.2.jar、commons-dbcp2-2.1.1.jar、mysql-connector-java-5.1.42-bin.jar、commons-logging-1.2.jar //缺少一个都会报错(Exception in thread "main" java.lang....
  • 错误:Cannot find class [org.apache.commons.dbcp.BasicDataSource] 原因:缺少commons-dbcp.jar
  • SSH使用dbcp数据库连接池搭建框架详细步骤 一 、准备工作: Spring+SpringMVC+Hibernate相关jar包(没有的可以到官网上下载。缺少的可以到maven中心仓库下载:推荐,maven中心仓库很全) jar包如下: 这里是...
  • 原因:缺少commons-dbcp.jar、commons-pool.jar包 在pom.xml加入这两个包就行啦 <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <...
  • 配置Tomcat-DBCP(MySQL)注意事项 <Resource name="MySQL" auth="Container" type="javax.sql.DataSource" maxActive="500" maxIdle="30" maxWait="100" username="root" password="baozi199929" ...
  • Spring—Mybatis整合过程中遇到的 Cannot find class [org.apache.... 缺少commons-dbcp.jar、commons-pool.jar、commons-collections这三个包 解决方案: 方法一:在pom.xml中添加依赖: &lt;dependen...
  • spring mvc配置 + dbcp数据源+jdbcTemplate 愿意了解框架技术或者源码的朋友直接求求交流分享技术:2042849237
  • 错误展示: 错误解决: 添加缺少的jar包:commons-collections-3.1.jar,commons-pool-1.3.jar,commons-dbcp.jar即可 ...
  • Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name ‘dataSource’ defined题所示的问题,作为初学者。这些都是很容易犯的一个问题。...缺少缺少 commons-dbcp.jar、 commons-p
  • 文章目录Apache commons 与开源的数据源连接池DBCP1、Apache commons2、使用开源DBCP来优化数据源设计2.1、使用DBCP替代数据源连接池datasource代码2.3、总结 Apache commons 与开源的数据源连接池DBCP 1、Apache ...
  • 通过DBCP2连接数据库报错 DBCP连接数据库时首先需要创建BasicDataSource类。 创建这个类有两种方法:一个是直接通过new BasicDataSource实例化该类,另一种是通过BasicDataSourcFactory获取该类。 该问题就是我...
  • 依赖commons-dbcp-1.4.jar和commons-pool-1.5.6.jar和ojdbc14.jar TestDbPools.java代码: [code="java"]import java.sql.Connection; import java.sql.SQLException; import java.util.Properties;...
  • 异常:Caused by: java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource解决方案:缺少文件,网上搜了一下,缺少commons-pool.jar、commons-dbcp-x.x.jar和commons-collections-x.x.jar这三个...
  • 在JAVA Spring+Struts+Hibernage三大框架融合的时候,刚创建的JAVA web项目,加入spring3.0后,spring配置文件出现错误提示:Class 'org.apache.commons.dbcp.BasicDataSource' not found环境:开发平台:myeclipse ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,517
精华内容 606
关键字:

缺少dbcp