社区
Web 开发
帖子详情
求连接池
zyzyandzyzy
2003-10-09 10:55:39
大家的连接池都是自己写的吗,有谁可以发个给我看看,谢谢了,
zyzyandzyzy@sina.com
另外问一下,连接池的配置一定要写在connectionpool.cfg里的吗,可不可以写在ini文件里。谢了
...全文
105
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);
}
}
}
连接池
mysql 异常_数据库
连接池
,出现了异常,
求
解决!!!
创建数据库
连接池
的时候,三个包mysql-connector-java-jar,commons-dbcp-1.4jar,commons-pool-1.5.5jar都导进去了,文本文件也写了,username=root;password=lxn123driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/testini...
回答完数据库
连接池
原理,面试官跪着
求
我入职他们公司
被面试官虐待的经历来自面试官发自灵魂深处的拷问:说说你对
连接池
的理解; 一脸懵逼的我:“额~ ~ ~,
连接池
是把数据库的连接统一进行管理,做到连接复用的目的”; 咄咄逼人的面试官:“嗯,没...
第五次发帖
求
帮助了:数据库
连接池
手写
连接池
,如何确保程序结束的时候,断开所有的连接。
按照网上的文章写了份c3p0
连接池
求
各位批评指点
项目结构如图 在src下游一个c3p0的配置文件:c3p0-config.xml 配置文件内容如下 10 30 100 10 200 com.mysql.jdbc.Dr
什么是
连接池
?为什么需要
连接池
呢?
连接池
的组成原理又是什么呢?
目录 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 实际操作中,我们要先获得..
Web 开发
81,108
社区成员
341,721
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章