社区
Web 开发
帖子详情
求连接池
zyzyandzyzy
2003-10-09 10:55:39
大家的连接池都是自己写的吗,有谁可以发个给我看看,谢谢了,
zyzyandzyzy@sina.com
另外问一下,连接池的配置一定要写在connectionpool.cfg里的吗,可不可以写在ini文件里。谢了
...全文
47
5
打赏
收藏
求连接池
大家的连接池都是自己写的吗,有谁可以发个给我看看,谢谢了, zyzyandzyzy@sina.com 另外问一下,连接池的配置一定要写在connectionpool.cfg里的吗,可不可以写在ini文件里。谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
withwind
2003-10-10
打赏
举报
回复
如果要自己写,其实很简单的,hehe......,给你个思路:
1. 初始化生成n个连接,压入Stack
2. 接到申请连接请求,如果Stack不会空,则pop一个连接,否则等待
3. 应用程序调用完成后,返回连接,压入Stack,唤醒所有等待
有的容器是带有连接池功能的,如:weblogic
没记错的话,<<java servlets 2.3编程指南>>这本书上有例子
etre
2003-10-10
打赏
举报
回复
还写在INI里,最好是写在一个xml里面啊,我写了一个可以支持Oracle,Mysql,Sql-server,Syabase,效率很高啊
给你看一下吧
<DBMapping>
<dataSource-mapping dsName="globalCom" dbPoolConnectionName="globalComPool" dbInitialCapacity="2" dbMaxCapacity="5" dbDriverName="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" dbServerName="rd1" dbServiceName="globalcom" dbPort="3306" dbUser="root" dbPassword="" dbDescription="globalCom" dbLoginTimeout="10"/>
<!--
<dataSource-mapping dsName="testDs1" dbPoolConnectionName="testPool1" dbInitialCapacity="2" dbMaxCapacity="5" dbDriverName="com.orient.oracle.PDataSource" dbServerName="cuipeng" dbServiceName="ora8" dbPort="1521" dbUser="system" dbPassword="manager" dbDescription="fgg" dbLoginTimeout="10"/>
<dataSource-mapping dsName="testDs2" dbPoolConnectionName="testPool2" dbInitialCapacity="2" dbMaxCapacity="5" dbDriverName="com.orient.oracle.PDataSource" dbServerName="cuipeng" dbServiceName="ora8" dbPort="1521" dbUser="system" dbPassword="manager" dbDescription="fgg" dbLoginTimeout="10"/>
-->
</DBMapping>
zyzyandzyzy
2003-10-10
打赏
举报
回复
up
programeyonger
2003-10-10
打赏
举报
回复
正如楼上所说的那样!比较简单!
aku0708
2003-10-10
打赏
举报
回复
import java.sql.*;
import java.util.*;
public class ConnBean {
private int inUse=0;
private Vector connections=new Vector();
private String poolname;
private String dbid;
private String drivername;
private String username;
private String passwd;
private int maxconn;
public ConnBean(String poolname,String dbid,String drivername,
String username,String passwd,int maxconn) {
this.poolname=poolname;
this.dbid=dbid;
this.drivername=drivername;
this.username=username;
this.passwd=passwd;
this.maxconn=maxconn;
}
public synchronized void releaseConn(Connection conn){
connections.addElement(conn);
inUse--;
}
public synchronized Connection getConn(){
Connection con=null;
if(connections.size()>0){
con=(Connection)connections.elementAt(0);
connections.removeElementAt(0);
try {
if (con.isClosed())
con = getConn();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
else if(maxconn==0||inUse<maxconn){
con=newConn();
}
if(con!=null){
inUse++;
}
return con;
}
private Connection newConn(){
Connection con=null;
try{
Class.forName(drivername).newInstance();
con=DriverManager.getConnection(dbid,username,passwd);
}
catch(Exception e){
e.printStackTrace();
return null;
}
return con;
}
public synchronized void closeconn(){
Enumeration allConnections=connections.elements();
while(allConnections.hasMoreElements()){
Connection con=(Connection) allConnections.nextElement();
try{
con.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
connections.removeAllElements();
}
}
//管理连接池
import java.sql.*;
import java.util.*;
public class ConnManager {
private Vector poolnames=new Vector();
private Vector drivernames=new Vector();
private Vector dbids=new Vector();
private Vector usernames=new Vector();
private Vector passwds=new Vector();
private Vector maxcons=new Vector();
private Hashtable connPools=new Hashtable();
public ConnManager() {
//在这里创建不同类型数据库的连接池,只需在这里重写下面的代码,比如SQLSERVER,ORACLE, ACCESS,MYSQL
poolnames.addElement("连接池名");
drivernames.addElement("JDBC驱动");
dbids.addElement("url");
usernames.addElement("用户名");
passwds.addElement("密码");
maxcons.addElement("最大连接数");
createPools();
}
public void realeaseConn(String name,Connection con){
ConnBean pool=(ConnBean)connPools.get(name);
if(pool!=null)
pool.releaseConn(con);
}
public Connection getConn(String name){
ConnBean pool=(ConnBean)connPools.get(name);
if(pool!=null)
return pool.getConn();
return null;
}
public synchronized void closeConn(){
Enumeration allPools=connPools.elements();
while(allPools.hasMoreElements()){
ConnBean pool=(ConnBean)allPools.nextElement();
pool.closeconn();
}
}
private void createPools(){
for(int i=0;i<poolnames.size();i++){
String poolname=poolnames.elementAt(i).toString();
String drivername=drivernames.elementAt(i).toString();
String dbid=dbids.elementAt(i).toString();
String username=usernames.elementAt(i).toString();
String passwd=passwds.elementAt(i).toString();
int maxconn=0;
try{
maxconn=Integer.parseInt(maxcons.elementAt(i).toString());
}
catch(NumberFormatException e){
e.printStackTrace();
}
ConnBean pool=new ConnBean(poolname,dbid,drivername,username,passwd,maxconn);
connPools.put(poolname,pool);
}
}
}
Java源码系列-手写数据库
连接池
(附源码)
为了理解数据库
连接池
的底层原理,我们可以自己手写一个类似Hikari,Druid一样的高性能的数据库
连接池
!通过手写数据库
连接池
掌握数据库
连接池
底层运行原理,胜任企业级开发、提高编程内功!!! 数据库
连接池
在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时的连接并没有关闭,而是由
连接池
管理器回收,并为下一次使用做好准备。 课程配套资料在课程附件中进行下载,学习过程总遇到任何技术相关问题可以及时沟通,远程解决~ 课程截图:
什么是
连接池
?为什么需要
连接池
呢?
连接池
的组成原理又是什么呢?
目录 1.为什么需要
连接池
呢? 2.什么是
连接池
3.
连接池
的工作原理 3.1详解
连接池
的工作原理 3.1.1
连接池
的创建: 3.1.2
连接池
的管理 3.1.3
连接池
的关闭 3.1.4相关词组详解 4.
连接池
的规范 4.1JavaEE规范规定: 4.2常见的第三方
连接池
5.如何使用Druid 5.1 导入jar包 5.2 入门案例 1.为什么需要
连接池
呢? Java程序操作数据库,必须获得一个连接Connection 实际操作中,我们要先获得..
数据库
连接池
学习笔记(一):原理介绍+常用
连接池
介绍
什么是
连接池
数据库
连接池
负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。 为什么要使用
连接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库
连接池
的解决方案是在应用程序启动...
MySQL-
连接池
一、
连接池
概念 1、概念
连接池
是connection对象的缓冲区,他里面会存放一些connection,当程序需要使用connection时,如果
连接池
中有,则直接从
连接池
获取,不需要再重新创建connection。
连接池
让程序能够复用连接。 2、为什么使用
连接池
每次创建和销毁连接都会带来较大的系统开销 每次创建和销毁连接都需要时间 可以防止大量用户并发访问数据库服务器 3、
连接池
优势 资源重用 更快地响应速度 新的资源分配手段 统一的连接管理,避免数据库连接泄露 4、
连接池
原理
Redis
连接池
配置详解
连接池
配置 文章目录
连接池
配置一、Redis
连接池
二、jar包准备三、编写代码配置,创建
连接池
,并调用处连接总结 一、Redis
连接池
与JDBC中在与数据库进行连接时耗时,从而需要引入
连接池
一样。Java在与Redis进行连接也是需要时间的。所以在Java于Redis进行连接中也需要引入
连接池
(以空间换时间)。 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、jar包准备 三、编写代码配置,创建
连接池
,并调用处连接 import redis.clients.
Web 开发
81,091
社区成员
341,719
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章