import java.lang.*;
import java.sql.*;
import java.util.*;
import java.io.*;
import javax.servlet.*;
public class ConnectionPool
{
private Vector freeConnections = null;
private Hashtable nowConnections = null;
private String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";
private String jdbcURL = "jdbc:odbc:software";
private int maxConnections = 3;
public ConnectionPool ()
{
}
public void openPool () throws SQLException
{
try
{
nowConnections = new Hashtable (maxConnections);
freeConnections = new Vector (maxConnections);
Class.forName (driverName);
for (int i = 0; i < maxConnections; i ++)
freeConnections.addElement (DriverManager.getConnection (jdbcURL));
}
catch (Exception ex)
{
nowConnections = null;
freeConnections = null;
throw new SQLException (ex.toString ());
}
}
public void closePool () throws SQLException
{
if (nowConnections != null)
{
for (Enumeration e = nowConnections.elements (); e.hasMoreElements (); )
((Connection) e.nextElement ()).close ();
nowConnections.clear ();
nowConnections = null;
}
if (freeConnections != null)
{
for (Enumeration e = freeConnections.elements (); e.hasMoreElements (); )
((Connection) e.nextElement ()).close ();
freeConnections.removeAllElements ();
freeConnections = null;
}
}
public Connection getConnection () throws SQLException
{
if (freeConnections == null)
throw new SQLException ("ConnectionPool还没有建立!");
if (freeConnections.size () == 0)
throw new SQLException ("没有空闲的连接,请稍后再请求!");
Connection Conn = (Connection) freeConnections.firstElement ();
freeConnections.removeElement (Conn);
nowConnections.put (Thread.currentThread (), Conn);
return Conn;
}
public void returnConnection () throws SQLException
{
Connection Conn = (Connection) nowConnections.remove (Thread.currentThread ());
freeConnections.addElement (Conn);
}
public void setPoolSwitch (String on_off) throws ServletException
{
try
{
if (on_off.equalsIgnoreCase ("ON"))
openPool ();
if (on_off.equalsIgnoreCase ("OFF"))
closePool ();
}
catch (SQLException ex)
{
throw new ServletException (ex.toString ());
}
}
public void setMaxConnections (int maxConnections)
{
this.maxConnections = maxConnections;
}
public void setDriverName (String driverName)
{
this.driverName = driverName;
}
public void setJdbcURL (String jdbcURL)
{
this.jdbcURL = jdbcURL;
}
}
import java.sql.*;
import java.util.*;
import java.io.*;
import javax.servlet.*;
public class ConnectionPool
{
private Vector freeConnections = null;
private Hashtable nowConnections = null;
private String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";
private String jdbcURL = "jdbc:odbc:software";
private int maxConnections = 3;
public ConnectionPool ()
{
}
public void openPool () throws SQLException
{
try
{
nowConnections = new Hashtable (maxConnections);
freeConnections = new Vector (maxConnections);
Class.forName (driverName);
for (int i = 0; i < maxConnections; i ++)
freeConnections.addElement (DriverManager.getConnection (jdbcURL));
}
catch (Exception ex)
{
nowConnections = null;
freeConnections = null;
throw new SQLException (ex.toString ());
}
}
public void closePool () throws SQLException
{
if (nowConnections != null)
{
for (Enumeration e = nowConnections.elements (); e.hasMoreElements (); )
((Connection) e.nextElement ()).close ();
nowConnections.clear ();
nowConnections = null;
}
if (freeConnections != null)
{
for (Enumeration e = freeConnections.elements (); e.hasMoreElements (); )
((Connection) e.nextElement ()).close ();
freeConnections.removeAllElements ();
freeConnections = null;
}
}
public Connection getConnection () throws SQLException
{
if (freeConnections == null)
throw new SQLException ("ConnectionPool还没有建立!");
if (freeConnections.size () == 0)
throw new SQLException ("没有空闲的连接,请稍后再请求!");
Connection Conn = (Connection) freeConnections.firstElement ();
freeConnections.removeElement (Conn);
nowConnections.put (Thread.currentThread (), Conn);
return Conn;
}
public void returnConnection () throws SQLException
{
Connection Conn = (Connection) nowConnections.remove (Thread.currentThread ());
freeConnections.addElement (Conn);
}
public void setPoolSwitch (String on_off) throws ServletException
{
try
{
if (on_off.equalsIgnoreCase ("ON"))
openPool ();
if (on_off.equalsIgnoreCase ("OFF"))
closePool ();
}
catch (SQLException ex)
{
throw new ServletException (ex.toString ());
}
}
public void setMaxConnections (int maxConnections)
{
this.maxConnections = maxConnections;
}
public void setDriverName (String driverName)
{
this.driverName = driverName;
}
public void setJdbcURL (String jdbcURL)
{
this.jdbcURL = jdbcURL;
}
}