数据库连接池 javaBean

   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;  
  }  
  }  

你可能感兴趣的:(数据库连接池 javaBean)