//establish a connection pool with specified parameter
private ConnectionFactory(ConnectionParameter cp)
{
this.gv_busyConnectionPool = new Vector();
this.gv_freeConnectionPool = new Vector();
public final synchronized Connection getConnection()
{
if(nullPool())
return null;
Connection con = null;
try
{
//get the free connection
con = instance.getFreeConnection();
if(con == null)
{
if (instance.gv_freeConnectionPool.isEmpty())
{
if (instance.currentConnections() < instance.gi_maxConnectionNumber)
{
int newcount = instance.gi_maxConnectionNumber - instance.currentConnections();
if ( newcount > instance.gi_minConnectionNumber)
{
newcount = instance.gi_minConnectionNumber;
}
instance.newConnection(newcount);
}
else
{
int timeout_num = instance.checkTimeout(instance.gv_freeConnectionPool)+instance.checkTimeout(instance.gv_busyConnectionPool);
instance.newConnection(timeout_num);
}
}
}