0

Ich möchte Verbindungspooling in meiner Java-Webanwendung mit MySQL und JDBC verwenden, fand ich eine sehr Ressource zu lernen bei Apache Tomcat 6.0 (6.0.35) - JNDI Datasource HOW-TO, Aber dieses Beispiel verwendet JSTL-Code, um zu erklären, wie Verbindung aus Pool abrufen. Ich möchte ähnlich arbeiten, aber mit einer MVC-Architektur von Grund auf bestehend aus Beans, DAOs, Servlets und JSPs. Ich habe alles, was ich will von einem sehr guten DAO tutorial von BalusC, aber ich bin verwirrt im letzten Teil des Tutorials sagen How about Connection Pooling?. Könnte jemand bitte dieses Verbindungspooling Thema und die close() Methode ausarbeiten?Setup Verbindungspooling in JSP/Servlets-Anwendung auf MVC basiert?

EDIT:
Eigentlich sollte ich auch früher dieses Ding hinzufügen haben:
Wie das Tutorial ich oben kommt vor JDK7 verknüpft haben, die nun versuchen-wth-Ressource hat Code, der die Connection automatisch schließt, dann, wie können wir einen Verbindungspool pflegen und eine Verbindung im Pool hier mit dem gleichen DAO-Code (oder mit wenigen Änderungen) wie im Tutorial schließen?

Antwort

1

, wenn Ihre Anwendung erfordert, ist von mehreren Benutzern ein connection verwendet werden kann durch eine connection pool so mehrere dieser Benutzer gehalten wird, die bestehende connection statt, um neue connection wiederverwenden, die Zeit in Anspruch nehmen wird. über die close() Methode: der Verbindungspool bleibt aktiv und wenn Sie nicht nach jedem Zugriff eine Verbindung zu ihm schließen, werden sich die Verbindungen stapeln und wenn die Nummer steigt, wird der Verbindungspool blockiert und akzeptiert keine weiteren Verbindungen mehr!

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

werden Sie bitte einen Code für den Pseudo-Code vorschlagen, der in der 'close()' Methode im Tutorial bereitgestellt wird? – Asif

+0

ich habe meine Antwort bearbeitet hoffe ich hoffe sie ist hilfreich für Sie. im Tutorial [link] (http://balusc.blogspot.in/2008/07/dao-tutorial-data-layer.html) von @BalusC sehe ich, dass die Verbindungen in der ** DAO-Utility-Klasse geschlossen sind * * – mykey

+0

Die Methoden 'DataSource' und' Connection # getConnection() 'sind mir schon klar und ich benutze sie auch, aber mein Problem ist mit der' close() 'Methode, im Tutorial' close() ' Methos wird verwendet, um die Verbindung, ResultSet und Statement-Objekte zu schließen, aber ich möchte es auf der Grundlage von Connection Pooling schreiben ... Was wird die _updated_ 'close()' für Connection Pooling sein? – Asif