如何在java中做连接池?

问题描述:

我想了解connection pooling in java,我在我的应用程序中使用jsp, servlet and tomcat 6 server。我已经在写入下面的代码java class dbconnection.java如何在java中做连接池?

我使用对于Oracle 10g EE在Windows XP操作系统

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

    public class dbconnection { 
    public Connection con = null;  
     public Connection getConnection() throws Exception, SQLException 
     { 
     try 
      { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:abc","abc", "abc");   
      } 
      catch(Exception e) 
      {   
      } 
     return con; 
     } 
    public void removeConnection() throws SQLException 
    { 
    con.close(); 
    } 
} 

那么我在servlet的retriving connection如下类型4 JDBC连接:

try{ 
dbconnection db= new dbconnection(); 

Connection con=db.getConnection(); 
} 
catch(Exception e){ 
} 
finally{ 
db.removeConnection();//removes connection 
} 

难道是connection pooling还是tomcat server还是别的什么配置?

+0

检查这个Q&A以获得更多信息:http://stackoverflow.com/questions/1458693/jdbc-connection-pooling-using-c3p0 – 2012-04-18 07:29:52

+0

你的问题在这里得到解答: 的http://计算器.com/questions/2835090/jdbc-connection-pooling – 2012-04-18 07:32:27

+1

不要做这个catch(Exception e){}',它使调试变得不可能。 – artbristol 2012-04-18 07:55:14

您可以获得第三方库,也可以使用Java EE容器(例如,JBoss或WebSphere)为您提供的连接池。

为此,您需要配置和使用JNDI数据源。

下面是详细介绍为Tomcat:

连接池是在所有主要的Web和应用服务器提供的功能。你可以找到关于使用Tomcat进行配置的简单示例。 Tomcat Connection Pooling

但是,如果你想编写自己的连接池,那么有可用的库来编写。 Apache DBCP

A 连接池通过执行提前创建连接的工作来运行。 对于JDBC连接池,在应用程序服务器启动时会创建一个Connection对象池。客户端可以访问连接池中的连接对象,并在数据库工作完成后将对象返回到池中。

的context.xml

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" 
maxActive="100" maxIdle="30" maxWait="10000" username="root" password="" 
driverClassName="com.mysql.jdbc.Driver"    
url="jdbc:mysql://localhost:3306/cdcol"/> 

//这应该在服务器范围内添加,xml文件。例如,如果你使用的是Apache服务器,然后context.xml中会在C发现:\ Apache的Tomcat的6.0.26 \的conf \ context.xml中

的web.xml

<resource-ref> 
     <description>DB Connection</description> 
     <res-ref-name>jdbc/TestDB</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

//这应该添加到本地项目的web.xml中。 (不在服务器的web.xml中)。

Context ctx=new InitialContext(); 
      Context envContext = (Context)ctx.lookup("java:comp/env"); 
      DataSource ds=(DataSource)envContext.lookup("jdbc/TestDB");//TestDB is the Database Name 
      con=ds.getConnection(); 
      stmt = con.createStatement(); 
+0

我之前已通知您关于链接到您自己的网站时要求披露的要求。此外,您的博客文章不*解决上述问题....并且您的文本也不在此处。 – 2013-03-05 10:14:56

+0

问题是关于如何做连接池并且这个人问过一个例子。所以我将它指向了连接池解释的网站,并给出了实现示例。 – Ruthreshwar 2013-03-06 04:05:24

+0

你没有透露它是*你的网站,你的文字只是说明连接池*是什么。这不是一个答案。 – 2013-03-06 04:10:33