`
prodream
  • 浏览: 106203 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java ee-数据源连接池DriverPool

    博客分类:
  • Java
阅读更多

DriverPool类,直接由数据库驱动程序构建,便于开发和调试单机高效的非事务程序

Public class DriverPool implements IConnPool{

private String driverName;

private String conURL;

private username;

private password;

private int min,max;

Vector conPool;

private Driver drv;

private class PooledConnection{

private Connection con;

privateboolean available;

private PooledConnection(Connection con,boolean available){

this.con=con;

this.available=available;

}

Connection getConnection(){

return con;

}

boolean isAvailable(){

return available;

}

void setAvailable(boolean available){

conAvailable=available;

}

}

//构造器

public DriverPool(int max,int min,String driverName,String conURL,String username,String password){

this.driverName=driverName;

this.conURL=conURL;

this.username=username;

this.password=password;

this.max=max;

this.min=min;

conPool=new Vector();

addConnectionsToPool(this.min);

//连接池后台监控启动

new PoolMonitor().startNow();

}

private synchronized void addConnectionsToPool(int numPooledCon){

try{

if(drv==null){

drv=(Driver) Class.forName(driverName).netIntance();

DriverManger.registerDriver(drv);

}

for(int i=0;i<numPooledCon;i++){

Connection con=DriverManger.getConnection(conURL,username,password);

PooledConnection pc=newPooledConnection(con,true);

conPool.add(pc);

}

}

catch(Exception e){

e.printStackTrace();

}

}

///监控连接池中的情况,实时回收无效的连接和根据要求往连接池中添加有效地连接,在监控线程中调用

private void moniPool{

removeAnyClosedConnections(); //删除所有无效的连接

if(this.conPool.size()<this.min){

int x=(this.max-this.min)/2;

int y=this.min-this.conPool.size();

if(x>0){

if(x+j>this.max){

this.addConnectionsToPool(x);

}

else{

this.addConnectionsToPool(x+j);

}

}

else(

this.addConnectionToPool(j);

}

}

}

}

private synchronized void removeAnyClosedConnection(){

try{

boolean done=false;

while(!done){

done=true;

for(int i=0;i<conPool.size();i+=){

PooledConnection pc=(PooledConnection) conPool.get(i);

if(pc.getConnection().isClosed()){

conPool.remove();

done=false;

break;

}

}

}

}

catch(SQLException e){

e.printStackTrace();

}

}

//从连接池中取出一个有效的连接

public synchronized Connection getConnection(){

//从池中找出一个有效的连接,返回

for(i=0;i<conPool.size();i++)

{

PooledConnection pc=(PooledConnection) conPool.get(i);

if(pc.isAvailable(){

pc.setAvailbale(false);

return pc.getConnection();

}

}

//如果池中没有就加一个,并返回,保证每个请求都有有效的连接返回

addConnectionsToPool(1);

PooledConnection pc=(PooledConnection) conPool.size()-1);

if(pc.isAvailable()){

pc.setAvailable(false);

}

return pc.getConnection();

}

//关闭连接池中的所有连接

public void closeAllConnections(){

for(int i=0;i<conPool.size();i++){

PooledConnection pc=(PooledConnecion) conPool.get(i);

closeConnection(pc.getConnection());

}

conPool.clear();

}

private void closeConnection(Connection con){

try{

if(con!=null){

con.close();

}

}

catch(SQLException e){

e.printStackTrace();

}

}

//后台监控线程,每秒监控一次

private class PoolMonitor

extends com.beetle.framework.appsrv.AppRunnable{

privat int time;

public PoolMonitor(){

super();

time=1000;

}

protected void end(){

closeAllConnections();

}

public void run(){

while(!this.getStopFlag()){

moniPool();

sleep(time);

}

}

}

}

分享到:
评论

相关推荐

    最新版windows graalvm-ee-java11-windows-amd64-21.2.0.zip

    最新版windows graalvm-ee-java11-windows-amd64-21.2.0.zip最新版windows graalvm-ee-java11-windows-amd64-21.2.0.zip

    Java 开发--JSP数据库连接池的研究与实现(源代码+论文).rar

    本项目“Java开发--JSP数据库连接池的研究与实现”深入探讨了如何在JSP中有效地使用数据库连接池,并提供了源代码和相关论文,以便开发者理解和实践。 数据库连接池的基本概念是维护一组预创建的数据库连接,这些...

    在GlassFish中配置数据源连接池

    在 GlassFish 中,数据源连接池是通过 JDBC(Java Database Connectivity)来实现的。 配置 GlassFish 数据源连接池的步骤: 1. 打开 GlassFish 管理控制台 首先,需要打开 GlassFish 的管理控制台,可以通过在...

    java-ee-api原版

    这个"java-ee-api原版"的压缩包很可能包含了Java EE 6的官方API文档,它是开发人员在使用Java EE 6进行开发时的重要参考资料。下面我们将深入探讨Java EE 6的一些核心概念和技术。 Java EE 6的引入是为了简化企业级...

    Java EE-API文档

    这个"Java EE-API文档"包含了Java EE平台的所有核心API和技术规范,是开发者理解和使用Java EE技术的重要参考资料。 首先,Java EE API文档主要分为以下几个关键部分: 1. **Servlet API**:Servlet是Java EE中的...

    java--ee-simple-case-master.zip

    这个“java--ee-simple-case-master.zip”压缩包显然包含了与Java EE相关的学习资料、项目源码和教程,这对于初学者或有经验的开发者来说都是宝贵的资源。 在Java EE中,核心概念包括: 1. **Servlet**:Servlet是...

    jakartaee-migration-1.0.1-SNAPSHOT-shaded.jar

    tomcat10 升级转换工具 命令:java -jar jakartaee-migration-版本号-shaded.jar D:\源路径\demo.war D:\目标路径\newdemo.war

    Java EE-test1

    【Java EE-test1】是一个与Java企业级应用开发相关的学习资源,主要涵盖了源代码分析和工具使用的主题。在Java EE的开发过程中,源码的阅读和理解是提升技术水平的重要环节,而工具的合理利用则能极大地提高开发效率...

    Java EE--注册登录系统

    【Java EE--注册登录系统】是...这个【JAVA EE--注册登录系统】项目为初学者提供了一个学习Java EE基础和安全实践的良好实例,涵盖了Web开发中的核心概念和技术,对于提升Web开发技能和理解用户认证流程有很好的帮助。

    JAVA-EE-api-5.0-中英文对照经理版.chm.7z

    这个“JAVA-EE-api-5.0-中英文对照经理版”压缩包包含的是Java EE 5.0版本的API文档,对于学习和理解Java Web开发至关重要。 Java EE 5.0是2006年发布的一个版本,它引入了许多改进,简化了开发流程,并提高了生产...

    jakartaee-migration-1.0.0

    由于JavaEE更名为Jakarta,原有的javax.*命名空间迁移为jakarta.x,原有项目如需迁移到tomca10.x必须要更改代码,此工具不需修改大量的源代码,只需将打出的war包放到解压后的lib下,执行java -jar jakartaee-...

    最新版linux graalvm-ee-java11-linux-aarch64-21.2.0.tar.gz

    最新版linux graalvm-ee-java11-linux-aarch64-21.2.0.tar.gz最新版linux graalvm-ee-java11-linux-aarch64-21.2.0.tar.gz

    java-ee-warehouse Java学习资料

    这个"java-ee-warehouse"压缩包很可能包含了一系列的Java EE学习资源,如源代码、教程文档、示例项目等。在深入探讨Java EE的知识点之前,我们先了解一下Java EE的基本概念。 Java EE是Sun Microsystems(现已被...

    java-EE-API.zip_Java ee api_java ee 6 api

    这个压缩包"java-EE-API.zip"包含了Java EE 6的API规范文档,这对于开发者理解和使用该版本的API至关重要。 首先,Java EE 6 API的核心目标是提供一组标准接口和服务,让开发者可以构建可扩展、健壮且安全的Web应用...

    JAVA-EE-PROJECT-.rar_JAVA EE_java EE个人_java EE项目

    5. **JNDI(Java Naming and Directory Interface)**: 提供了一个查找和管理资源的接口,如数据库连接池。 6. **JMS(Java Message Service)**: 支持异步通信和消息队列,实现解耦的分布式系统。 7. **JSF(Java...

    java_ee_sdk-5.rar_java ee 5 sdk api_java-ee-sdk api

    Java EE(Java Platform, Enterprise Edition)是Java平台上用于构建企业级应用的一套全面的框架和服务。Java EE 5是这个平台的一个重要版本,它在2006年发布,为开发者提供了许多改进和新特性,旨在简化开发流程,...

    java-ee-ssm-day-two-master.zip

    1. **项目结构**:在`java-ee-ssm-day-two-master`这个项目中,我们可以看到典型的SSM项目结构,包括src/main/java目录下的源代码、src/main/resources下的配置文件、以及src/main/webapp下的Web应用资源。...

    java_-ee-master.zip

    【Java EE概述】 ...提供的"java_-ee-master.zip"资源包含了一系列的Java EE练习代码,这将是你学习和提升技能的重要辅助工具。通过不断练习和探索,你将能够熟练掌握Java EE,成为一名专业的Java开发者。

    JAVA-EE-api-中英文对照版

    **JAVA-EE-api-中英文对照版** Java Enterprise Edition(JAVA-EE)是Java平台的一个重要组成部分,专门用于开发企业级应用。它提供了一系列的API和服务,使得开发者能够构建分布式、多层架构的应用,包括但不限于...

    JAVA-EE-Review.zip_JAVA EE_JAVA EE

    7. **JNDI(Java Naming and Directory Interface)**:JNDI提供了一个接口,用于查找和管理分布式环境中的资源,如数据库连接池、邮件服务器等。 8. **JTA(Java Transaction API)**:JTA用于处理分布式事务,...

Global site tag (gtag.js) - Google Analytics