2017-03-03 3 views
0

Ich versuche, Verbindungspooling mit Apache dbcp2 zu verwenden.Java DBCP2 Verbindungspooling erstellt die Verbindung nach dem Schließen der maximalen Verbindung.

Meine maxTotal Verbindung ist 5. Ich schließe jede Verbindung nach der Verwendung.

Aber immer noch bekomme ich Verbindung nach 5 Verbindung vom Verbindungspool geschlossen.

whether es wird ping-datenbank, um die verbindung zu bekommen, nachdem 5 verbindungen geschlossen sind? oder es wird vom Verbindungspool selbst kommen, ohne db zu gehen.

Unten ist mein Beispiel Codeausschnitt. Bitte korrigieren Sie mein Verständnis über Verbindungspooling.

BasicDataSource bds = getBasicDataSource(); 

System.out.println (bds.getMaxTotal()); // Prints - 5 

for (int i=0; i<10; i++) { 
    conn = bds.getConnection(); 
    System.out.println("Conn "+conn); // conn object printing different values for all 10 connections 
    conn.close(); 
} 

Antwort

0

Die Verbindung ein Client aus einem Pool bekommt, ist nicht wirklich ein java.sql.Connection, es ist ein Wrapper (ein Proxy) für eine java.sql.Connection, die das Verhalten einiger Methoden individualisiert. Die Methode close() ist eine davon und schließt die Connection-Instanz nicht, sondern gibt sie an den Pool zurück.

Versuchen Sie C3PO zu verwenden, aus meiner Sicht ist es besser als DBCP.

Verwandte Themen