2011-01-11 3 views
0

Ich verwende eine datenbanklastige Java-Anwendung auf einem Cluster mit Connector/J 5.1.14. Daher habe ich bis zu 150 gleichzeitige Aufgaben, die auf dieselbe MySQL-Datenbank zugreifen. Ich erhalte den folgenden Fehler:MySQL mit Java: Verbindung nur öffnen, wenn möglich

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Too many connections 

Das passiert, weil der Server nicht so viele Verbindungen verarbeiten kann. Ich kann nichts auf dem Datenbankserver ändern. Meine Frage ist also: Kann ich überprüfen, ob eine Verbindung möglich ist, BEVOR ich mich tatsächlich mit der Datenbank verbinde?

So etwas wie diese (Pseudocode):

check database for open connection slots 
if (slot is free) { 
    Connection cn = DriverManager.getConnection(url, username, password); 
} 
else { 
    wait ... 
} 

Prost

Antwort

3
try{ 
    //try to connect 
}catch(com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException ex) { 
    //what ever you want to do 
} 

Siehe auch:

+0

Genau das, was ich gesucht habe, habe ich in eine While-Schleife eingebettet. Vielen Dank. –

0

So etwas besser funktionieren sollte.

try 
{ 
    Connection cn = DriverManager.getConnection(url, username, password); 
} 
catch (com.mysql.jdbc.exceptions.MySQLNonTransientConnection e) 
{ 
    // wait ... 
} 
1

Verwenden Sie einen Verbindungspool wie wie zum Beispiel C3P0. Ein etwas anständiger Verbindungspool kann eine bestimmte Zeitüberschreitung warten und eine bestimmte Anzahl von Malen wiederholen, bis eine Verbindung verfügbar ist, und sie dann zurückgeben. Stellen Sie außerdem sicher, dass Sie Connection#close() in finally Block von jedem try aufrufen, wo Sie die Verbindung erwerben. Andernfalls wird die Verbindung nie zum Pool freigegeben (oder zur Datenbank, wenn Sie keinen Pool verwenden), und Sie werden sowieso keine Verbindung mehr haben.

+0

Danke für den Vorschlag, ich kannte C3P0 nicht. Alle meine Verbindungen sind geschlossen, es ist eine Cluster-Sache. –

Verwandte Themen