通过以上优化,可以使你的封装类以最低的资源消耗来获取最大的性能.我们可以这样来进行测试:
把if(dsCache == null){}发生时的情况记录到日志中,看看什么时候发生了这种异常,我对我的数据库进行了
跟踪,我们给青岛日报社做的一台邮件系统主机上有6万多用户,同时并发的访问量很大,但日记记录,只有每次
重启动应用的时候才产生一条记录,也就是ConnectionFactory第一次调用时才产生日志,其它情况非常正常:
public class ConnectionFactory{
private static DataSource dsCache = null;
private static Properties properties = new Properties();
aMethodForGetConnectio(){
if(dsCache == null){
synchronized(this){
if(dsCache==null){
if(!properties.containsKey("key"))
properties.load(new FileInputStream("配置文件"));
//只有在没有找到属性时才去再读配置文件
Context ct = new InitialContext();
dsCache = (DataSource) ct.lookup(properties.getProperty("key"));
}
}
//当发生dsCache == null时,记录下发生对该方法的调用者:
PrintWriter pw = new PrintWriter(new FileWriter("connection.log",true));
pw.println(new java.util.Date() + ":当前方法名如aMethodForGetConnectio():"
+ sun.reflect.Reflection.getCallerClass(2));
pw.close();
}
Connection conn = dsCache.getConnection();
}
}
文章出处:DIY部落(http://www.diybl.com/course/3_program/java/javashl/200855/112957_2.html)
分享到:
相关推荐
在Spring Boot框架中,`DataSource`的注入是应用程序与数据库交互的基础。`DataSource`是一个接口,通常由诸如HikariCP、Druid或Tomcat JDBC等实现提供,它负责存储和管理数据库连接,使得我们的应用能够高效且安全...
赠送jar包:dynamic-datasource-spring-boot-starter-3.4.1.jar; 赠送原API文档:dynamic-datasource-spring-boot-starter-3.4.1-javadoc.jar; 赠送源代码:dynamic-datasource-spring-boot-starter-3.4.1-sources...
在这个名为"dataSourceSwitch_DataSourceSwitch_solar8t4_springbootmysql_DataS"的项目中,我们看到一个实际应用于生产环境的数据源切换解决方案,它基于MySQL数据库和Spring Boot框架。 首先,让我们深入了解...
赠送jar包:spring-cloud-alibaba-sentinel-datasource-2021.1.jar; 赠送原API文档:spring-cloud-alibaba-sentinel-datasource-2021.1-javadoc.jar; 赠送源代码:spring-cloud-alibaba-sentinel-datasource-2021....
赠送jar包:sentinel-datasource-extension-1.8.0.jar; 赠送原API文档:sentinel-datasource-extension-1.8.0-javadoc.jar; 赠送源代码:sentinel-datasource-extension-1.8.0-sources.jar; 赠送Maven依赖信息...
### 解决WinForm设置 DataSource 属性后无法修改项集合 #### 背景与问题描述 在使用Windows Forms(简称WinForm)开发应用程序时,经常会遇到需要动态更新控件(如 ComboBox、ListBox 或 CheckBoxList)数据的情况...
赠送jar包:sentinel-datasource-extension-1.8.0.jar; 赠送原API文档:sentinel-datasource-extension-1.8.0-javadoc.jar; 赠送源代码:sentinel-datasource-extension-1.8.0-sources.jar; 赠送Maven依赖信息...
赠送jar包:dynamic-datasource-spring-boot-starter-3.4.1.jar; 赠送原API文档:dynamic-datasource-spring-boot-starter-3.4.1-javadoc.jar; 赠送源代码:dynamic-datasource-spring-boot-starter-3.4.1-sources...
《mybatis-plus-dynamic-datasource:mybatis-plus与多数据源的集成实践》 在当今的软件开发中,数据库的灵活管理和切换是系统架构中不可或缺的一部分。mybatis-plus-dynamic-datasource 是一个专门为 SpringBoot ...
### 建立增强BW Datasource:使用User Exit增强Datasource #### 一、引言 SAP Business Information Warehouse(简称SAP BW)作为一款强大的数据仓库解决方案,提供了丰富的预配置对象,统称为“Business Content...
动态数据源(Dynamic DataSource)是一种在Java应用中实现多数据源切换的技术,它允许应用程序根据需求选择不同的数据库进行数据操作。动态数据源启动器(Dynamic DataSource Starter)是为Spring Boot框架设计的一...
数据源(DataSource)是Java应用程序与数据库交互的重要接口,它在数据连接池(Connection Pool)的基础上提供了一种高效、安全的管理数据库连接的方式。在Java的JDBC API中,DataSource接口是 javax.sql.DataSource...
"DataSource接口介绍与使用" 一、DataSource接口介绍: DataSource接口是一个更好的连接数据源的方法。JDBC1.0是原来是用DriverManager类来产生一个对数据源的连接。JDBC2.0用一种替代的方法,使用DataSource的实现...
标题中的“Dynamic datasource”指的是动态数据源,这是一个在软件开发中用于管理多个数据库连接的技术。在Spring Boot框架中,动态数据源允许应用根据业务需求在运行时切换不同的数据源,提高了系统的灵活性和可...
### Spring Boot 多数据源配置(使用 dynamic-datasource 动态数据源插件) #### 一、多数据源背景及介绍 在 Spring Boot 应用开发过程中,开发者通常会为项目配置一个单一的数据源来执行数据库操作。然而,在某些...
动态数据源(Dynamic DataSource)是Java开发中处理多数据源的一种技术,主要应用于需要同时连接多个数据库的应用场景。在大型企业级应用或者分布式系统中,根据业务需求将数据分散存储在多个数据库中是很常见的做法...
`dynamic-datasource-spring-boot-starter`项目正致力于解决这个问题,它是一个基于Spring Boot的启动器,用于实现动态数据源切换,提供灵活的数据源管理功能。 **动态数据源**指的是在一个应用中可以动态地选择...
由于毕业后工作没有对接到专业问题,导致四五年没有碰过Winform程序了。突然由于工作问题,为了...cbTcid.DataSource = CustomerBLL.select(); cbTcid.ValueMember = Cid; cbTcid.DisplayMember = Cpname; } else { ret
"Spring动态切换datasource实现mysql多主多从"是针对大型分布式系统中数据读写分离、负载均衡的一种常见策略。该技术使得应用程序能够在运行时根据业务需求灵活地选择不同的数据源,从而提高系统的可扩展性和可用性...