当前位置: 代码迷 >> Java Web开发 >> db.properties配置连接,出现异常的最大连接数限制
  详细解决方案

db.properties配置连接,出现异常的最大连接数限制

热度:612   发布时间:2016-04-17 14:00:12.0
db.properties配置连接,出现错误的最大连接数限制
这是   db.properties配置信息
drivers=oracle.jdbc.driver.OracleDriver  
logfile=d:\\workspace\\log.txt  
oracle.url=jdbc:oracle:thin:@192.168.18.11:1521:prod  
oracle.maxconn=100  
oracle.user=apps
oracle.password=apps


日志:
Mon   Jun   18   09:55:53   CST   2007:   成功注册JDBC驱动程序oracle.jdbc.driver.OracleDriver
Mon   Jun   18   09:55:53   CST   2007:   错误的最大连接数限制:   100     .连接池:   oracle
Mon   Jun   18   09:55:53   CST   2007:   成功创建连接池oracle
Mon   Jun   18   09:55:55   CST   2007:   连接池oracle创建一个新的连接

import   java.io.*;
import   java.sql.*;
import   java.util.*;
import   java.util.Date;
/**
*   管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接
*   池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.
*/
public   class   DBConnectionManager   {
static   private   DBConnectionManager   instance;   //   唯一实例
static   private   int   clients;

private   Vector   drivers   =   new   Vector();
private   PrintWriter   log;
private   Hashtable   pools   =   new   Hashtable();

/**
*   返回唯一实例.如果是第一次调用此方法,则创建实例
*
*   @return   DBConnectionManager   唯一实例
*/
static   synchronized   public   DBConnectionManager   getInstance()   {
if   (instance   ==   null)   {
instance   =   new   DBConnectionManager();
}
clients++;
return   instance;
}

/**
*   建构函数私有以防止其它对象创建本类实例
*/
private   DBConnectionManager()   {
init();
}
/**
*   将连接对象返回给由名字指定的连接池
*
*   @param   name   在属性文件中定义的连接池名字
*   @param   con   连接对象
*/
public   void   freeConnection(String   name,   Connection   con)   {
DBConnectionPool   pool   =   (DBConnectionPool)   pools.get(name);
if   (pool   !=   null)   {
pool.freeConnection(con);
}
}

/**
*   获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数
*   限制,则创建并返回新连接
*
*   @param   name   在属性文件中定义的连接池名字
*   @return   Connection   可用连接或null
*/
public   Connection   getConnection(String   name)   {
DBConnectionPool   pool   =   (DBConnectionPool)   pools.get(name);
if   (pool   !=   null)   {
return   pool.getConnection();
}
return   null;
}

/**
*   获得一个可用连接.若没有可用连接,且已有连接数小于最大连接数限制,
*   则创建并返回新连接.否则,在指定的时间内等待其它线程释放连接.
*
*   @param   name   连接池名字
*   @param   time   以毫秒计的等待时间
*   @return   Connection   可用连接或null
*/
public   Connection   getConnection(String   name,   long   time)   {
DBConnectionPool   pool   =   (DBConnectionPool)   pools.get(name);
if   (pool   !=   null)   {
return   pool.getConnection(time);
}
return   null;
}

public   int   getClient(){
return   clients;
}
/**
*   关闭所有连接,撤销驱动程序的注册
*/
public   synchronized   void   release()   {
//   等待直到最后一个客户程序调用
if   (--clients   !=   0)   {
return;
}
  相关解决方案