# Connection Pools



## Blandorin (19. Aug 2006)

Hallo!
Ich habe eine Client/Server Anwendung, bei der viele Datenbank-Einträge vorgenommen werden. Während dies am Anfang (also nachdem man den Server gestartet hat) sehr schnell geht, verzögert es sich im weiteren Verlauf immer mehr. Nach 20h Laufzeit dauert das "DB-Verbinden"-"Eintragen"-"DB-Verbindung-Closen" schon mehrere Sekunden.

Eine Verbindung wird derzeit so aufgebaut:


```
con = DriverManager.getConnection...
```

Ich brauche nun eine Lösung, so dass auch nach mehreren Tagen die Datenbank-Verbindungen schnell erzeugt werden können.

Meine Idee war, dies per Connection Pool zu machen. Alle Informationen, die ich dazu erhalte, laufen jedoch mit Tomcat.. 

Der Ansatz scheint folgender zu sein:


```
ctx = new InitialContext();
ds = (DataSource)ctx.lookup("jdbc/meine_db")
 con = ds.getConnection();
```

So läuft es aber nicht, da ich irgendwo noch "jdbc/meine_db" definieren muss. Und daran scheitere ich momentan.


Vielen Dank im Vorraus,
Blandorin


----------



## bronks (19. Aug 2006)

Was für einen Server verwendest Du?

Schließt Du die Verbindungen wieder oder läßt Du sie einfach offen?


----------



## Blandorin (20. Aug 2006)

Das ganze läuft auf einem Linux Server mit Debian 3.1 Distribution.

Wenn ein Datenbankeintrag vorgenommen werden muss, wird eine Verbindung zur Datenbank hergestellt, der entsprechende Eintrag vorgenommen und die Verbindung mit "con.close()" wieder geschlossen.


----------



## bronks (20. Aug 2006)

Da hilft erstmal nur eines: Schau auf die Datenbank, ob evtl. Verbindungen offen bleiben und blockieren. Am billigsten könnte man mit einem niedrigen TimeOut vorübergehend entgegenwirken.

ConnectionPooling mit JNDI verwende ich nur in Zusammenhang mit AS. Der DBCP vom Tomcat logt liegengebliebene Verbindungen. Evtl. wäre es einen Versuch wert, Deinen Server auf Tomcat laufen zu lassen und dessen ConnectionPooling zu verwenden.


----------

