# JDBC Connection isValid()?



## Weisswurst (26. Nov 2008)

Hi!

Ich wollte iegntlich mit isValid prüfen ob meine Verbindung noch lebt...
Ich bekomme aber folgendes log...



```
2008-11-26 11:06:58,144 DEBUG [main] db_updater.Db_Provider: Entering method get
ProjectIdByHostName: Params: w7ac-128092pc
2008-11-26 11:06:58,144 DEBUG [main] db_updater.Db_Provider: Entering method che
ckConnection:
Exception in thread "main" java.lang.AbstractMethodError: net.sourceforge.jtds.j
dbc.ConnectionJDBC3.isValid(I)Z
        at db_updater.Db_Provider.checkConnection(Db_Provider.java:142)
        at db_updater.Db_Provider.getProjectIdByHostName(Db_Provider.java:170)
        at db_updater.Db_Updater.main(Db_Updater.java:82)
Program shut down!
```

Was'n da los?

Ich habe kein Connectionpooling eingerichtet, weil ich tatsächlich immer nur eine Verbindung brauche.

Meine check Methode sieht so aus:


```
private boolean checkConnection() throws SQLException, DBErrorException {
		if (DEBUG)
			begin(log, "");

		if (!connection.isValid(15)) {
			log.warn("Verbindung zu Datenbank verloren." + 
					"Versuche Wiederherstellung...");
			establishConnection();
			prepareStatements();
		}

		if (DEBUG)
			end(log);

		return true;
	}
```


----------



## tfa (26. Nov 2008)

Keine Ahnung, was die Fehlermeldung zu bedeuten hat, aber man sollte sich immer einen Connectionpool leisten, auch wenn man nur eine Verbindung hat.


----------



## Weisswurst (26. Nov 2008)

Es muss auch so gehen.

Die Software wird auf ca. 70 Rechnern zeitgleich laufen.
Wenn ich jetzt auf jedem Rechner ein Connectionpooling mit vier Verbindungen laufen habe,
dann hat der DB Server volkommen unnötiger weise 280 Verbindungen 24/7 zu verwalten plus eine unbekannte Anzahl was noch über den Apache plus PHP dazu kommt.


----------



## Weisswurst (26. Nov 2008)

Inzwischen hab ich's gefunden.
isValid() wird vom JDBC3 Treiber nicht unterstützt.


----------



## tfa (26. Nov 2008)

Weisswurst hat gesagt.:
			
		

> Es muss auch so gehen.
> 
> Die Software wird auf ca. 70 Rechnern zeitgleich laufen.
> Wenn ich jetzt auf jedem Rechner ein Connectionpooling mit vier Verbindungen laufen habe,
> dann hat der DB Server volkommen unnötiger weise 280 Verbindungen 24/7 zu verwalten plus eine unbekannte Anzahl was noch über den Apache plus PHP dazu kommt.



Wenn jeder Client nur eine Verbindung braucht, wäre es ja auch bescheuert vier zu konfigurieren. Dann setzt man die maximale Connectionanzahl eben auf 1.
Der Pool kümmert sich halt automatisch darum, dass abgebrochene Verbindungen wieder aufgebaut werden, und das kann immer passieren. Ansonsten musst das eben selber machen.


----------

