0

我想在我的java web应用程序中使用连接池与MySQL和JDBC,我发现一个非常资源学习Apache Tomcat 6.0 (6.0.35) - JNDI Datasource HOW-TO, 但是这个例子使用JSTL代码来解释如何从池中检索连接。我想要类似地工作,但是从头开始包含Beans,DAO,Servlet和JSP的MVC体系结构。我从BalusC的一个非常好的DAO tutorial中获得了我想要的所有内容,但在教程的最后部分How about Connection Pooling?中我感到困惑。任何人都可以详细说明这个连接池主题和close()方法吗?设置基于MVC的jsp/servlets应用程序中的连接池?

编辑:
其实我应该有加这个东西也较早:
正如我上面链接来JDK7,现在有尝试,问心无愧资源代码,自动关闭Connection,那么如何才教程我们是否可以维护一个连接池并在这里关闭一个连接,使用相同的DAO代码(或者几乎没有变化)就像在教程中一样?

回答

1

如果应用程序需要是由多个用户使用的一个connection可以通过connection pool这么几个这些用户的举行将重用现有connection,而不是制造新的connection这将消耗时间。 关于close()方法:连接池保持活动状态,并且如果您在每次访问后都没有关闭连接,则连接将堆积如果数量增加,连接池会卡住并且不再接受其他连接!

public class MyDao { 

    private InitialContext context; 
    private DataSource datasource; 

    public MyDao() { 

     try { 

      Class.forName("com.mysql.jdbc.Driver"); 
      Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password"); 
      context = new InitialContext(); 
      datasource = (DataSource) context.lookup("datasource name"); 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, e.getMessage()); 
     } 

    } 
public MyBean getMyBean() throws SQLException { 
     Connection connection = null; 
     PreparedStatement statement = null; 
     ResultSet res = null; 

     String sql = "some query"; 
     try { 
      connection = datasource.getConnection();//pool connection 
      statement = connection.prepareStatement(sql); 
      res = statement.executeQuery(); 
      while (res.next()) { 
       //return true 

      } 
     } catch (SQLException ex) { 
      ex.printStackTrace(); 
     } 

    finally { 
      if (rs!= null) try { rs.close(); } catch (SQLException logOrIgnore) {}//result set if any 
      if (stm!= null) try { stm.close(); } catch (SQLException logOrIgnore) {}//clase statement if any 
      if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}//close connection 
      } 
      } 


}//close MyDao 
+0

请您在本教程的'close()'方法中提供伪代码代码吗? – Asif 2012-04-11 14:41:55

+0

我已经编辑了我的答案,希望对你有帮助。在@BalusC的教程[link](http://balusc.blogspot.in/2008/07/dao-tutorial-data-layer.html)中,我看到连接在** DAO实用程序类中关闭* * – mykey 2012-04-11 14:51:12

+0

'DataSource'和'Connection#getConnection()'方法在我脑海中已经清楚了,我也在使用它们,但是我的问题是'close()'方法, Methos用于关闭连接,ResultSet和Statement对象,但是我想根据Connection Pooling'重写它...... Connection Pooling的_updated_' close()会是什么? – Asif 2012-04-11 15:18:09

相关问题