jdbc连接池

 连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用 .

一个线程需要用 JDBC 对一个 GBase 或其它数据库操作时,它从池中请求一个连接。当这个线程使用完了这个连接,将它返回到连接池中,这样这就可以被其它想使用它的线程使用。 当连接从池中“借出”,它被请求它的线程专有地使用。从编程的角度来看,这和用户的线程每当需要一个 JDBC 连接的时候调用DriverManager.getConnection() 是一样的,采用连接池结束,可通过使用新的或已有的连接结束线程。 连接池可以极大的改善用户的 Java 应用程序的性能,同时减少全部资源的使用。连接池主要的优点有:

 

减少连接创建时间  

虽然与其它数据库相比 GBase 提供了较为快速连接功能,但是创建新的 JDBC 连接仍会招致网络和 JDBC 驱动的开销。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。  

 

简化的编程模式  

当使用连接池时,每一个单独的线程能够像创建了一个自己的 JDBC 连接一样操作,允许用户直接使用JDBC编程技术。  

 

受控的资源使用  

如果用户不使用连接池,而是每当线程需要时创建一个新的连接,那么用户的应用程序的资源使用会产生非常大的浪费并且可能会导致高负载下的异常发生。

Tomcat连接池的配置和使用,数据库为sqlserver2008,注意tomcat要6.0以上。

1、将数据库驱动导入到tomcat的lib中。

2、在myeclipse  web工程的META-INF中创建配置文件context.xml,其内容如下

 

  
  
  
  
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <Context reloadable="true" crossContext="true"> 
  3.  <!-- Default set of monitored resources --> 
  4.  <WatchedResource>WEB-INF/web.xml</WatchedResource> 
  5.  <!-- Uncomment this to disable session persistence across Tomcat restarts --> 
  6.  <!-- 
  7.   <Manager pathname="" /> 
  8.  --> 
  9.  <Resource  
  10.  name="jspjdbc/myDataSource"  名称,通常取”jdbc/XXX”的格式 
  11.  auth="Container" 
  12.  type="javax.sql.DataSource" 数据源类别 
  13.  driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 驱动名称 
  14.  url="jdbc:sqlserver://localhost:1433;DataBaseName=JpetStore"  
  15.  username="sa"     用户名 
  16.  password="123"    密码 
  17.  maxActive="100"    最大活动的连接。 
  18.  maxIdle="30"     最大处于空闲的连接数 
  19.  maxWait="1000"/>  最长等待获得连接的时间 
  20. </Context> 

4、进过上面的配置就可以在servlet中使用连接池了。简单的写了个

 

  
  
  
  
  1. import java.sql.Connection; 
  2. import java.sql.SQLException; 
  3.  
  4. import javax.naming.Context; 
  5. import javax.naming.InitialContext; 
  6. import javax.naming.NamingException; 
  7. import javax.sql.DataSource; 
  8. public class DBUtil { 
  9.      
  10.     private DBUtil(){} 
  11.     private static DBUtil dbutil; 
  12.     public static synchronized DBsUtil getInstance() 
  13.     { 
  14.         if (null == dbutil) { 
  15.             dbutil = new DBUtil(); 
  16.         } 
  17.         return dbutil; 
  18.     } 
  19.     public Connection getConnection()  
  20.     { 
  21.         DataSource ds = null
  22.         Connection con = null
  23.         Context ctx = null;  
  24.         try { 
  25.             ctx = new InitialContext(); 
  26.         } catch (NamingException e) { 
  27.             // TODO Auto-generated catch block 
  28.             e.printStackTrace(); 
  29.         } 
  30.         if(ctx!=null){ 
  31.             try { 
  32.                 ds = (DataSource)ctx.lookup("java:comp/env/jspjdbc/myDataSource"); 
  33.             } catch (NamingException e) { 
  34.                 // TODO Auto-generated catch block 
  35.                 e.printStackTrace(); 
  36.             } 
  37.             try { 
  38.                 con = ds.getConnection(); 
  39.             } catch (SQLException e) { 
  40.                 // TODO Auto-generated catch block 
  41.                 e.printStackTrace(); 
  42.             } 
  43.         } 
  44.         return con; 
  45.     } 

你可能感兴趣的:(jdbc,连接池)