`

连接池

    博客分类:
  • Java
阅读更多

 

         Java JDBC 中会有一个连接池的概念,那么我们来看看常用的连接池有哪些: proxool dbcp c3p0 ,其优劣各有优点不想评价,自己在项目中以 proxool 为主;

         那么连接池具体是做什么的呢?其基本思想就是为数据连接建立一个“缓冲池”,而后预先在这个缓冲池中放入一定数量的连接,当需要建立数据库连接的时候,只需要从缓冲池中取出一个即可,使用完之后再放回缓冲池中去。在这个过程中服务启动要相对慢点,但是这相对用户访问时是的请求处理速度来说,替换的是值得的。这里我们还可以设置连接池的最大连接数来防止系统无尽的与数据库建立连接,更重要的是我们可以通过连接池的管理机制监视数据库的连接数量和使用情况,为系统开发、测试及性能调整提供依据;

         Ok ,废话少说,以 proxool 为例,来看看 JDBC 中如何加入连接池。

1、  首先要导入“ commons-logging-1.1.jar ”、“ proxool-0.9.1.jar ”、“ proxool-cglib.jar ”;

2、  web.xml 中加入一下配置:

  <servlet>
    <servlet-name>ServletConfigurator</servlet-name>
    <servlet-class>
			org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
    <init-param>
      <param-name>xmlFile</param-name>
      <param-value>WEB-INF/proxool.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet>
    <servlet-name>proxoolAdmin</servlet-name>
    <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>proxoolAdmin</servlet-name>
    <url-pattern>/proxool_admin</url-pattern>
  </servlet-mapping>

 

说明:

         · <load-on-startup>1</load-on-startup> :这里表示启动是加载;

         · proxoolAdmin proxool 提供的管理监控工具,可查看当前数据库连接情况。如果运行不成功,请删除本行(用 http://localhost/web-name/Admin 访问得到监控结果);

         ·还有一些其他的属性,但只有特定条件下才会使用,这里就一一列举了。

3、  WEB-INF 添加 proxool.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
  <proxool>
    <alias>db_onlineproject</alias>
    <driver-url>jdbc:mysql://localhost:3306/db_onlineproject</driver-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <driver-properties>
      <property name="user" value="root"/>
      <property name="password" value="123"/>
    </driver-properties>
    <maximum-connection-count>100</maximum-connection-count> 
    <minimum-connection-count>10</minimum-connection-count> 
    <trace>true</trace>
    <house-keeping-test-sql>select 0</house-keeping-test-sql> 
  </proxool>
</something-else-entirely>

 

说明:

         · alias :别名

         · maximum-connection-count :最大的数据库连接数 .

         · minimum-connection-count :最小的数据库连接数 .

         · house-keeping-test-sql :这里的 select 0 是为了可以在任意数据库中都可以正常执行,测试连接

         Other

 

house-keeping-sleep-time: house keeper 保留线程处于睡眠状态的最长时间 ,house keeper 的职责就是检查各个连接的状态 , 并判断是否需要销毁或者创建,这个的默认值是 30 秒。

      house-keeping-test-sql:  如果发现了空闲的数据库连接 .house keeper 将会用这个语句来测试 . 这个语句最好非常快的被执行 . 如果没有定义 , 测试过程将会被忽略。

      maximum-active-time: 如果 housekeeper 检测到某个线程的活动时间大于这个数值 . 它将会杀掉这个线程 . 所以确认一下你的服务器的带宽 . 然后定一个合适的值 . 默认是 5 分钟。经常有些人或许会遇到正在执行的程序忽然拒绝连接,莫明其妙的程序假死,这些都与这个参数的设置有关,我们大部分数据库操作都会在 5 分钟之内完成,可是偏偏有些可能 5 分钟还完成不了,而这个值如果按照默认值的话,连接池就会不管你到底有没有执行完,都会强行关闭数据库连接,所以这个值你可要小心设置哦:)

     maximum-connection-count: 最大的数据库连接数 . 一般的大应用设置 30 就足够了。

     maximum-connection-lifetime: 一个线程的最大寿命 .

     minimum-connection-count: 最小的数据库连接数,一般最好事先初始化一部分连接这样,对于初次连接数据库的应用效率比较高,推荐设置 5 10

     prototype-count: 连接池中可用的连接数量 . 如果当前的连接池中的连接少于这个数值 . 新的连接将被建立 ( 假设没有超过最大可用数 ). 例如 . 我们有 3 个活动连接 2 个可用连接 , 而我们的 prototype-count 4, 那么数据库连接池将试图建立另外 2 个连接 . 这和 minimum-connection-count 不同 . minimum-connection-count 把活动的连接也计算在内 .prototype-count spare connections 的数量 .

      trace: 如果为 true, 那么每个被执行的 SQL 语句将会在执行期被 log 记录 (DEBUG LEVEL). 你也可以注册一个 ConnectionListener ( 参看 ProxoolFacade) 得到这些信息 .

 

4、调用

package com.theone.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/**
 * 建立数据库连接类
 * @author xudongwang
 *
 */
public class DbUtil {
	public static Connection getConn() throws SQLException {
		
		return DriverManager.getConnection("proxool.db_onlineproject");
	}
}

 

 

分享到:
评论

相关推荐

    连接池案例 连接池案例

    在IT行业中,数据库连接池是优化数据库访问性能和资源管理的重要技术。连接池的基本思想是重用已建立的数据库连接,避免频繁创建和销毁连接带来的性能开销。本篇文章将深入探讨连接池的概念、工作原理以及如何在实际...

    kafka生产者连接池

    为了优化性能和提高效率,开发人员常常会利用连接池技术来管理Kafka生产者的连接。本文将深入探讨"Kafka生产者连接池"的概念、实现原理以及它如何提升系统性能。 Kafka生产者连接池是一种资源复用机制,它允许多个...

    okhttp中连接池实现

    它的核心特性之一就是连接池(Connection Pool),它在提高网络性能和减少延迟方面起到了关键作用。本文将深入探讨OkHttp中的连接池实现,包括连接对象的添加、移除机制以及其工作原理。 首先,我们需要了解什么是...

    java ftp连接池

    Java FTP连接池是一种用于管理FTP(文件传输协议)连接的资源池,它的主要目标是提高应用程序的性能和效率。在传统的FTP操作中,每次需要连接到FTP服务器时都会创建一个新的连接,这会消耗大量时间和系统资源。而...

    tomcat连接池与阿里Druid连接池

    Tomcat 连接池和阿里 Druid 连接池的配置和比较 Tomcat 连接池是一种基于 Java 的数据库连接池实现,提供了高效、可靠的数据库连接管理。阿里 Druid 连接池是阿里巴巴开发的开源连接池,提供了高性能、可靠的数据库...

    Mongodb连接池for java

    在标签中,“MongoDB”是数据库的名字,“Mongo连接池”指的是针对MongoDB数据库的连接池,“连接池”是数据库连接管理的一个通用概念,适用于各种数据库系统。 在压缩包“mongodb_pool”中,可能包含了以下内容: ...

    C#高效数据库连接池源码

    数据库连接池是数据库管理中的重要概念,特别是在高并发和大数据量的应用场景下,它能显著提升性能并降低系统资源消耗。在C#编程环境中,我们可以使用自定义的数据库连接池来实现这一功能。本篇文章将深入探讨“C#...

    java 数据库 连接池驱动.rar

    Java数据库连接池驱动是Java应用程序在访问数据库时用于优化资源管理的一种技术。它提供了一种在多个数据库操作之间重用数据库连接的方式,从而避免了频繁创建和关闭连接带来的性能开销。连接池的核心思想是池化资源...

    Tomcat连接池配置.doc

    Tomcat 连接池配置详解 Tomcat 连接池配置是 Web 应用程序中一个非常重要的组件,它负责管理和维护数据库连接,确保数据访问的高速和安全性。本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 ...

    RabbitMQ客户端连接池的原理及源码

    本文将深入探讨RabbitMQ客户端连接池的工作原理,并分析其源码,以期帮助读者理解如何有效地利用连接池优化系统性能。 连接池的基本思想是预先创建一定数量的连接并保持空闲状态,当应用需要时可以从池中获取,使用...

    C# 数据库连接池 C# 数据库连接池

    数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...

    spring中 连接池的使用

    在Spring框架中,数据库连接池是管理数据库连接的关键组件,它能有效地提高应用程序的性能和资源利用率。在上述内容中,提到了两种常用的连接池实现:Apache的DBCP(BasicDataSource)和C3P0(ComboPooledDataSource...

    c# mysql数据库连接池实现

    在.NET Core 2.1框架下,可以使用.NET Standard库来实现高效、优化的数据库连接管理,特别是通过连接池来提高性能。本文将深入探讨如何在C#中使用MySQL数据库连接池。 首先,我们需要了解什么是数据库连接池。...

    数据库连接池技术详解

    对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 在较为完备的数据库连接池实现中,可根据...

    MySql数据库连接池C#代码(有注释含测试代码)

    MySQL数据库连接池是提高应用程序性能的一种重要技术,它允许开发者管理多个数据库连接并高效地复用这些连接,而不是每次需要时都创建新的连接。在C#编程中,我们可以使用自定义的连接池或者第三方库如ADO.NET的...

    socket 客户端连接池实现

    Socket客户端连接池是一种在分布式系统或网络编程中提高性能和效率的重要技术。它允许应用程序预先创建并维护一组可重用的Socket连接,从而避免了每次通信时建立新连接的开销。本文将深入探讨Socket客户端连接池的...

    使用连接池技术时的配置

    使用连接池技术时的配置 在本文中,我们将讨论使用连接池技术时的配置,特别是关于 Tomcat、MySQL 和 Eclipse 的数据库连接池配置。 一、开发工具介绍 为了配置连接池,我们需要使用以下开发工具: * Tomcat ...

    java socket连接池 实现

    Java Socket 连接池实现是提高网络应用性能和效率的关键技术之一。在高并发的网络环境中,频繁地创建和销毁Socket连接会导致大量的系统资源浪费,影响整体性能。为了解决这个问题,开发人员通常会使用连接池来管理和...

    oracle 数据库,在C++中用连接池实现高速连接与访问.rar

    2. 创建连接池:通过oci池化函数ociPoolCreate创建连接池,指定最小、最大连接数以及空闲连接超时时间。 3. 获取连接:当需要访问数据库时,从连接池中获取一个已建立的连接,而不是每次都新建。 4. 使用连接:执行...

Global site tag (gtag.js) - Google Analytics