thrift mysql连接池_Thrift连接池实现

该博客详细介绍了如何使用Apache Commons Pool实现Thrift的连接池,并配置了连接池参数,包括最大活动连接数、最大空闲连接数、最小空闲连接数等。此外,还展示了如何创建Thrift对象工厂,以及获取和归还连接的方法,以优化Thrift与MySQL数据库之间的交互效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/** @(#)DefaultConnectionProviderImpl.java    0.1 05/11/17

*

* Copyright 2010 QISI, Inc. All rights reserved.

* QISI PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*/packagecom.qidea.thrift.pool;importorg.apache.commons.pool.ObjectPool;importorg.apache.commons.pool.impl.GenericObjectPool;importorg.apache.thrift.transport.TSocket;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.DisposableBean;importorg.springframework.beans.factory.InitializingBean;/***

*@authorsunwei

*@version2010-8-10

*@sinceJDK1.5*/publicclassGenericConnectionProviderimplementsConnectionProvider,

InitializingBean, DisposableBean

{publicstaticfinalLogger logger=LoggerFactory

.getLogger(GenericConnectionProvider.class);/**服务的IP地址*/privateString serviceIP;/**服务的端口*/privateintservicePort;/**连接超时配置*/privateintconTimeOut;/**可以从缓存池中分配对象的最大数量*/privateintmaxActive=GenericObjectPool.DEFAULT_MAX_ACTIVE;/**缓存池中最大空闲对象数量*/privateintmaxIdle=GenericObjectPool.DEFAULT_MAX_IDLE;/**缓存池中最小空闲对象数量*/privateintminIdle=GenericObjectPool.DEFAULT_MIN_IDLE;/**阻塞的最大数量*/privatelongmaxWait=GenericObjectPool.DEFAULT_MAX_WAIT;/**从缓存池中分配对象,是否执行PoolableObjectFactory.validateObject方法*/privatebooleantestOnBorrow=GenericObjectPool.DEFAULT_TEST_ON_BORROW;privatebooleantestOnReturn=GenericObjectPool.DEFAULT_TEST_ON_RETURN;privatebooleantestWhileIdle=GenericObjectPool.DEFAULT_TEST_WHILE_IDLE;/**对象缓存池*/privateObjectPool objectPool=null;/****/@OverridepublicvoidafterPropertiesSet()throwsException

{//对象池objectPool=newGenericObjectPool();//((GenericObjectPool) objectPool).setMaxActive(maxActive);

((GenericObjectPool) objectPool).setMaxIdle(maxIdle);

((GenericObjectPool) objectPool).setMinIdle(minIdle);

((GenericObjectPool) objectPool).setMaxWait(maxWait);

((GenericObjectPool) objectPool).setTestOnBorrow(testOnBorrow);

((GenericObjectPool) objectPool).setTestOnReturn(testOnReturn);

((GenericObjectPool) objectPool).setTestWhileIdle(testWhileIdle);

((GenericObjectPool) objectPool)

.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_BLOCK);//设置factoryThriftPoolableObjectFactory thriftPoolableObjectFactory=newThriftPoolableObjectFactory(

serviceIP, servicePort, conTimeOut);

objectPool.setFactory(thriftPoolableObjectFactory);

}

@Overridepublicvoiddestroy()

{try{

objectPool.close();

}catch(Exception e)

{thrownewRuntimeException("erorr destroy()", e);

}

}

@OverridepublicTSocket getConnection()

{try{

TSocket socket=(TSocket) objectPool.borrowObject();returnsocket;

}catch(Exception e)

{thrownewRuntimeException("error getConnection()", e);

}

}

@OverridepublicvoidreturnCon(TSocket socket)

{try{

objectPool.returnObject(socket);

}catch(Exception e)

{thrownewRuntimeException("error returnCon()", e);

}

}publicString getServiceIP()

{returnserviceIP;

}publicvoidsetServiceIP(String serviceIP)

{this.serviceIP=serviceIP;

}publicintgetServicePort()

{returnservicePort;

}publicvoidsetServicePort(intservicePort)

{this.servicePort=servicePort;

}publicintgetConTimeOut()

{returnconTimeOut;

}publicvoidsetConTimeOut(intconTimeOut)

{this.conTimeOut=conTimeOut;

}publicintgetMaxActive()

{returnmaxActive;

}publicvoidsetMaxActive(intmaxActive)

{this.maxActive=maxActive;

}publicintgetMaxIdle()

{returnmaxIdle;

}publicvoidsetMaxIdle(intmaxIdle)

{this.maxIdle=maxIdle;

}publicintgetMinIdle()

{returnminIdle;

}publicvoidsetMinIdle(intminIdle)

{this.minIdle=minIdle;

}publiclonggetMaxWait()

{returnmaxWait;

}publicvoidsetMaxWait(longmaxWait)

{this.maxWait=maxWait;

}publicbooleanisTestOnBorrow()

{returntestOnBorrow;

}publicvoidsetTestOnBorrow(booleantestOnBorrow)

{this.testOnBorrow=testOnBorrow;

}publicbooleanisTestOnReturn()

{returntestOnReturn;

}publicvoidsetTestOnReturn(booleantestOnReturn)

{this.testOnReturn=testOnReturn;

}publicbooleanisTestWhileIdle()

{returntestWhileIdle;

}publicvoidsetTestWhileIdle(booleantestWhileIdle)

{this.testWhileIdle=testWhileIdle;

}publicObjectPool getObjectPool()

{returnobjectPool;

}publicvoidsetObjectPool(ObjectPool objectPool)

{this.objectPool=objectPool;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值