package intelcom.db;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.log4j.Logger;
/**
* @author Administrator
*
*/
public class DbConn {
// read the xml configuration file为所有对共享的一块不可改变的内存区域
private static final String CONFIG_FILE = "db.config";
private static final String CONFIG_URL = "url";
private static final String CONFIG_DRIVER = "driver";
private static final String CONFIG_USERNAME = "username";
private static final String CONFIG_PASSWORD = "passwd";
// get the var from configuration file初始化类成员变量
private static String strUrl = "jdbc:oracle:thin:@1.1.1.1:1521:ynjyfx";
private static String strDriver = "oracle.jdbc.driver.OracleDriver";
private static String strUserName = "di_source";
private static String strPasswd = "ynposon123";
private static DataSource dataSource = null;
private static Logger log = Logger.getLogger(DbConn.class);
static {//JVM加载.class类文件时,会运行一次静态块
try {
Properties properties = new Properties();
properties
.load(DbConn.class.getResourceAsStream(CONFIG_FILE));
strUrl = properties.getProperty(CONFIG_URL);
strDriver = properties.getProperty(CONFIG_DRIVER);
strUserName = properties.getProperty(CONFIG_USERNAME);
strPasswd = properties.getProperty(CONFIG_PASSWORD);
} catch (Exception e) {
log.info("DBConnection.java : 初始化数据库连接参数失败 !请检查db.config文件");
log.info("DBConnection.java : 出错异常:" + e.getMessage());
}
// get connection
try {
//public static void setPropertiessetProperty(String key,String value)设置指定键指示的系统属性。
//key - 系统属性的名称。value - 系统属性的值。
System.setProperty("jdbc.drivers", strDriver);
Class.forName(strDriver);//jdbc的驱动不需实例化,就可以得到该驱动类的实例
dataSource = setupDataSource(strDriver, strUserName, strPasswd,
strUrl);
} catch (ClassNotFoundException e) {
log.info("DBConnection.java : 未找到Oracle数据库驱动类!");
log.info("DBConnection.java : 加载驱动失败:" + e.getMessage());
} catch (Exception sqle) {
log.info("DBConnection.java : 连接oracle数据库失败!");
log.info("DBConnection.java : 连接数据库错误:" + sqle.getMessage());
}
}
// set datasource用该DataSource接口对象去存取数据库,先设置后getConnection();
public static DataSource setupDataSource(String sDrvName, String sUserName,
String sPwd, String connectURI) {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(sDrvName);
ds.setUsername(sUserName);
ds.setPassword(sPwd);
ds.setUrl(connectURI);
ds.setMaxActive(50);
ds.setMaxIdle(10);
ds.setMaxWait(10000); // 10 seconds
return ds;
}
//commons-dbcp-1.2.1.jar用连接池在池中缓存连接实例,不用每次都去建立建接。
public static Connection getConnection() throws SQLException,
ClassNotFoundException {
BasicDataSource bds = (BasicDataSource) dataSource;
// log.info("DBConnection.java : 连接池中连接数:NumActive =
// "+bds.getNumActive()+" , 空闲连接数:"+"NumIdle = "+bds.getNumIdle());
return dataSource.getConnection();//返回前面已经设置好的dataSource表示的数据源的一个连接对象
}
}
分享到:
相关推荐
在IT行业中,数据库连接池是优化数据库访问性能和资源管理的重要技术。连接池的基本思想是重用已建立的数据库连接,避免频繁创建和销毁连接带来的性能开销。本篇文章将深入探讨连接池的概念、工作原理以及如何在实际...
为了优化性能和提高效率,开发人员常常会利用连接池技术来管理Kafka生产者的连接。本文将深入探讨"Kafka生产者连接池"的概念、实现原理以及它如何提升系统性能。 Kafka生产者连接池是一种资源复用机制,它允许多个...
它的核心特性之一就是连接池(Connection Pool),它在提高网络性能和减少延迟方面起到了关键作用。本文将深入探讨OkHttp中的连接池实现,包括连接对象的添加、移除机制以及其工作原理。 首先,我们需要了解什么是...
Java FTP连接池是一种用于管理FTP(文件传输协议)连接的资源池,它的主要目标是提高应用程序的性能和效率。在传统的FTP操作中,每次需要连接到FTP服务器时都会创建一个新的连接,这会消耗大量时间和系统资源。而...
Tomcat 连接池和阿里 Druid 连接池的配置和比较 Tomcat 连接池是一种基于 Java 的数据库连接池实现,提供了高效、可靠的数据库连接管理。阿里 Druid 连接池是阿里巴巴开发的开源连接池,提供了高性能、可靠的数据库...
在标签中,“MongoDB”是数据库的名字,“Mongo连接池”指的是针对MongoDB数据库的连接池,“连接池”是数据库连接管理的一个通用概念,适用于各种数据库系统。 在压缩包“mongodb_pool”中,可能包含了以下内容: ...
数据库连接池是数据库管理中的重要概念,特别是在高并发和大数据量的应用场景下,它能显著提升性能并降低系统资源消耗。在C#编程环境中,我们可以使用自定义的数据库连接池来实现这一功能。本篇文章将深入探讨“C#...
Java数据库连接池驱动是Java应用程序在访问数据库时用于优化资源管理的一种技术。它提供了一种在多个数据库操作之间重用数据库连接的方式,从而避免了频繁创建和关闭连接带来的性能开销。连接池的核心思想是池化资源...
Tomcat 连接池配置详解 Tomcat 连接池配置是 Web 应用程序中一个非常重要的组件,它负责管理和维护数据库连接,确保数据访问的高速和安全性。本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 ...
本文将深入探讨RabbitMQ客户端连接池的工作原理,并分析其源码,以期帮助读者理解如何有效地利用连接池优化系统性能。 连接池的基本思想是预先创建一定数量的连接并保持空闲状态,当应用需要时可以从池中获取,使用...
数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...
在Spring框架中,数据库连接池是管理数据库连接的关键组件,它能有效地提高应用程序的性能和资源利用率。在上述内容中,提到了两种常用的连接池实现:Apache的DBCP(BasicDataSource)和C3P0(ComboPooledDataSource...
在.NET Core 2.1框架下,可以使用.NET Standard库来实现高效、优化的数据库连接管理,特别是通过连接池来提高性能。本文将深入探讨如何在C#中使用MySQL数据库连接池。 首先,我们需要了解什么是数据库连接池。...
对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 在较为完备的数据库连接池实现中,可根据...
MySQL数据库连接池是提高应用程序性能的一种重要技术,它允许开发者管理多个数据库连接并高效地复用这些连接,而不是每次需要时都创建新的连接。在C#编程中,我们可以使用自定义的连接池或者第三方库如ADO.NET的...
Socket客户端连接池是一种在分布式系统或网络编程中提高性能和效率的重要技术。它允许应用程序预先创建并维护一组可重用的Socket连接,从而避免了每次通信时建立新连接的开销。本文将深入探讨Socket客户端连接池的...
使用连接池技术时的配置 在本文中,我们将讨论使用连接池技术时的配置,特别是关于 Tomcat、MySQL 和 Eclipse 的数据库连接池配置。 一、开发工具介绍 为了配置连接池,我们需要使用以下开发工具: * Tomcat ...
Java Socket 连接池实现是提高网络应用性能和效率的关键技术之一。在高并发的网络环境中,频繁地创建和销毁Socket连接会导致大量的系统资源浪费,影响整体性能。为了解决这个问题,开发人员通常会使用连接池来管理和...
2. 创建连接池:通过oci池化函数ociPoolCreate创建连接池,指定最小、最大连接数以及空闲连接超时时间。 3. 获取连接:当需要访问数据库时,从连接池中获取一个已建立的连接,而不是每次都新建。 4. 使用连接:执行...