【红包扫雷源码教学】【苹果内部获取源码】【有趣的程序源码】basicdatasource源码

2024-11-15 00:55:07 来源:内存监视器源码 分类:百科

1.basicdatasource和drivermanagerdatasource的区别
2.springbasicdatasource和datasource的区别
3.如何创建 DataSource
4.源码详解系列(四) ------ DBCP2的使用和分析(包括JNDI和JTA支持)已停更

basicdatasource源码

basicdatasource和drivermanagerdatasource的区别

       ã€€ã€€ DriverManager传统的jdbc连接,通过Class.forName("XXX"),的办法注册之后,就可以DriverManager.getConnection()获得连接了。

        DataSource是建立在JNDI服务基础上的,需要application server配置datasource.首先需要注册一个DataSource(一般在/META-INF/context.xml下)然后在 web.xml文件中引用这个DataSource,就可以DataSource.getConnection()获得连接,具体操作参考(tomcat 目录里的JNDI Resources小节) 。

springbasicdatasource和datasource的区别

       é…ç½®ä¸€ä¸ªæ•°æ®æº Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源

如何创建 DataSource

       ä½ å¥½ï¼Œå¯ä»¥å‚见下面:

       æ•°æ®æºæ˜¯æ•°æ®åº“连接池里面的概念,连接池就是指当服务器启动时,先建立几个连接,在应用需要与数据库连接时,就从连接池里获取,使用完以后,不是将连接断掉,而是放回到池里面,这样就减少了数据连接创建的次数,大大提高了连接性能。而数据源就是给服务器一个配置信息,然服务器就知道怎么使用JDBC驱动,比如url参数,数据库实例名、用户名与密码等等。Java中的数据源就是javax.sql.DataSource。DataSource的创建可以有不同的实现,下面以mysql为例介绍几种常见DataSource的创建方法:

       ä¸€ã€JNDI方式创建DataSource

        以JNDI方式创建数据源首先要配置数据源的相关连接信息,也就是数据源连接池。该配置应该在Tomcat安装目录下的conf/context.xml文件中配置,在Eclipse的J2EE架构下,也可以把context.xml文件创建在/META-INF目录下。其配置如下:

       <Context><!--MySql-->

       <Resource name="jdbc/movie" auth="Container" type="javax.sql.DataSource"

        maxActive="" maxIdle="" maxWait=""

        username="[用户名]" password="[密码]" driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://localhost:/[实例名]?autoReconnect=true"/>

       </Context>

       æ­£ç¡®çš„配置后,就可以在程序中以JNDI的方式创建数据源,得到数据库连接并进行相应的操作。代码如下:

       try {

        Context context = new InitialContext();

        if (context == null){

        throw new Exception("create context failed!");

        }

        DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/[实例名]");

        if (ds == null) {

        Thread.sleep();

        ds = (DataSource) context.lookup("java:comp/env/jdbc/[实例名]");

        if (ds == null) {

        throw new Exception("get datasource failed!");

        }

        }

        } catch (NamingException ne) {

        throw ne;

        } catch (Exception e) {

        throw e;

        }

       äºŒã€Apache提供的简单连接池创建数据源

        以这种方式创建数据源必须先准备两个jar文件:commons-dbcp.jar 和 commons-pool.jar,将这两个jar包放到WEB-INF/lib目录下。以这种方式创建的数据源就不再是javax.sql.DataSource了,而是org.apache.commons.dbcp.BasicDataSource。而且不再需要配置任何文件就可以直接使用。代码如下:

       // 创建BasicDataSource对象

        BasicDataSource ds = new BasicDataSource();

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

        ds.setUrl("jdbc:mysql://localhost:/[实例名]");

        ds.setUsername("[用户名]");

        ds.setPassword("[密码]");

        ds.setInitialSize();

        ds.setMaxActive();

        ds.setMaxIdle();

        ds.setMaxWait();

        // 关闭数据源连接

        ds.close();

       ä¸‰ã€C3P0方式创建数据源

        使用C3P0方式创建数据源应该首先准备一个jar文件:c3p0-0.9.1.2.jar,将其放到WEB-INF/lib目录下,就可以在项目中使用C3P0创建数据源,C3P0创建的数据源对象也不是DataSource对象,而是ComboPooledDataSource,代码如下:

       // 创建ComboPooledDataSource对象

       ComboPooledDataSource ds = new ComboPooledDataSource();

       ds.setDriverClass("com.mysql.jdbc.Driver");

       ds.setJdbcUrl("jdbc:mysql://localhost:/[实例名]");

       ds.setUser("[用户名]");

       ds.setPassword("[密码]");

       ds.setInitialPoolSize();

       ds.setMaxPoolSize();

       ds.setMaxIdleTime();

       å››ã€Proxool方式创建数据源

        采用该方式创建数据源需要准备的jar包:proxool-.9.0RC3.jar,将其放到WEB-INF/lib目录下,之后就可以项目中创建ProxoolDataSource对象,其代码如下:

       // 创建ProxoolDataSource对象

       ProxoolDataSource ds = new ProxoolDataSource();

       ds.setDriver("com.mysql.jdbc.Driver");

       ds.setDriverUrl("jdbc:mysql://localhost:/[实例名]");

       ds.setUser("[用户名]");

       ds.setPassword("[密码]");

       äº”、BoneCP方式创建数据源

        BoneCP是一个快速高效,开源免费的Java数据库接池。创作者称,BoneCP在性能上会完全超越所有主流的Java连接池。它可以帮你管理数据连接,让你的应用程序能更快速地访问数据库。比C3P0/DBCP(DataBaseconnection pool,数据库连接池)连接池快倍。这个数据库连接池采用Google Collection作为内部的集合类框架,而且现在的版本已经很稳定。要使用BoneCP,必须用到的jar文件有:

       Â· bonecp-0.6.5.jar

       Â· google-collections-1.0.jar

       Â· slf4j-api-1.5..jar

       Â· slf4j-log4j-1.5..jar

       Â· log4j-1.2..jar

       å°†è¿™äº›jar包放到WEB-INF/lib目录下,就可以在程序中创建BoneCPDataSource对象,代码如下:

       // 创建BoneCPDataSource对象

        BoneCPDataSource ds = new BoneCPDataSource();

        ds.setDriverClass("com.mysql.jdbc.Driver");

        ds.setJdbcUrl("jdbc:mysql://localhost:/[实例名]");

        ds.setUsername("[用户名]");

        ds.setPassword("[密码]");

        ds.setAcquireIncrement(1);

        ds.setAcquireRetryDelay();

        ds.setIdleConnectionTestPeriod();

        ds.setMinConnectionsPerPartition(2);

        ds.setMaxConnectionsPerPartition();

        ds.setPartitionCount(2);

       åœ¨åˆ›å»ºå®Œæ•°æ®æºä¹‹åŽï¼Œå°±å¯ä»¥åˆ©ç”¨jdbc在程序与数据库之间建立连接,但要注意的是,要有相关的jdbc驱动包,不同的数据库需要不同的驱动,一般在各个数据库官方网都可以获取。

       æœ›é‡‡çº³ï¼

源码详解系列(四) ------ DBCP2的使用和分析(包括JNDI和JTA支持)已停更

       DBCP是一个用于创建和管理数据库连接的工具,通过连接池复用连接以减少资源消耗。它具备连接数控制、连接有效性检测、连接泄露控制和缓存语句等功能。Tomcat内置连接池、红包扫雷源码教学Spring团队推荐使用DBCP,阿里巴巴的druid也是基于DBCP开发的。

       DBCP支持通过JNDI获取数据源,并且可以获取JTA或XA事务中的连接对象,用于两阶段提交(2PC)的事务处理。本篇文章将通过例子来解释如何使用DBCP。

       以下是文章的详细内容:

       使用例子需求

       本例将展示如何使用DBCP连接池获取连接对象,并进行基本的增删改查操作。

       工程环境

       JDK:1.8.0_

       maven:3.6.1

       IDE:eclipse 4.

       mysql-connector-java:8.0.

       mysql:5.7.

       DBCP:2.6.0

       主要步骤

       创建Maven项目,苹果内部获取源码打包方式为war(war也可以是jar,这里选择war是为了测试JNDI功能)。

       引入DBCP相关依赖。

       在resources目录下创建dbcp.properties文件,配置数据库连接参数及连接池基本参数。

       编写JDBCUtils类,实现初始化连接池、有趣的程序源码获取连接、管理事务和资源释放等功能。

       创建测试类,实现基本的增删改查操作。

       配置文件详解

       dbcp.properties文件包含数据库连接参数和连接池基本参数,如数据库URL、用户名、现金网源码出租密码、连接池大小等。其中,数据库URL后面添加了参数以避免乱码和时区问题。建议根据项目需求调整参数设置。

       基本连接属性

       数据库URL

       用户名

       密码

       连接池大小

       缓存语句(在MySQL下建议关闭)

       连接检查参数(建议开启testWhileIdle,避免性能影响)

       事务相关参数(通常使用默认设置)

       连接泄漏回收参数

       其他参数(较少使用)

       源码分析

       DBCP主要涉及以下几个类:

       BasicDataSource:提供基本的asp源码后门检测数据库操作数据源。

       BasicManagedDataSource:BasicDataSource的子类,用于创建支持XA事务或JTA事务的连接。

       PoolingDataSource:BasicDataSource中实际调用的数据源,用于管理连接。

       ManagedDataSource:PoolingDataSource的子类,用于支持XA事务或JTA事务的连接。

       使用DBCP连接池创建连接时,首先创建BasicDataSource对象,初始化配置参数。然后从连接池中获取连接。连接获取过程涉及到数据源和连接池的创建,连接对象的包装和回收。

       通过JNDI获取数据源对象需求

       使用JNDI获取DBCP数据源对象,以PerUserPoolDataSource和SharedPoolDataSource为例。为了在tomcat容器中测试,需要配置JNDI上下文。

       引入依赖

       引入JNDI相关的依赖。

       编写context.xml文件,配置JNDI上下文。

       在web.xml中配置资源引用,将JNDI对象与web应用绑定。

       测试结果

       打包项目并部署到tomcat上运行,通过访问指定的jsp页面,验证JNDI获取数据源对象的正确性。

       使用DBCP测试两阶段提交

       介绍如何使用DBCP实现JTA事务的两阶段提交(2PC)。使用DBCP的BasicManagedDataSource类支持事务处理。通过测试代码验证了2PC的正确性。

       以上内容涵盖了DBCP的使用、配置、源码分析、JNDI集成以及两阶段提交的实现,为开发者提供了全面的参考。

本文地址:http://04.net.cn/html/48b452895423.html 欢迎转发