4

我试图理解connection pooling in java,我jsp, servlet and tomcat 6 server在我的应用程序中使用。我在 a 中编写了以下代码java class dbconnection.java

我在 Windows Xp OS 中使用类型 4 jdbc 与 oracle 10g EE 连接

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

然后我connection在 servlet 中检索如下:

try{
 dbconnection db= new dbconnection();

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

是否connection pooling需要某些配置tomcat server或其他什么?

4

3 回答 3

6

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

上下文.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();
于 2013-03-05T10:09:02.970 回答
3

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

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

以下是 Tomcat 的详细信息:

于 2012-04-18T07:30:47.537 回答
1

连接池是所有主要 Web 和应用程序服务器中可用的功能。您可以找到使用 Tomcat 进行配置的简单示例。Tomcat 连接池

但是,如果您想编写自己的连接池,那么可以编写一些库。Apache DBCP

于 2012-04-18T07:31:44.520 回答