# Problem mit mehreren Datasourcen



## MrQ (17. Nov 2012)

Hallo,

ich habe folgendes Problem.

Mein Programm greift auf zwei verschiedene Datenbanken zu.
Dafür erzeuge ich in meiner Hauptklasse zwei Datasourcen:

```
DataSource ds1 = (DataSource) new InitialContext().lookup("fehlererkennungDS");
DataSource ds2 = (DataSource) new InitialContext().lookup("fehlererkennungDS2");
```

Beide Datasourcen übergebe ich dann an einen Thread.
Die zweite Datasource wird nicht immer verwendet.
In dem Thread übergebe ich immer die erste Datasource an ein neu erzeugtes Objekt (im Konstruktor).
Je nachdem, ob ich vorher die zweite genutzt habe oder nicht, wird in dem Objekt auf die Erste oder Zweite zugegriffen.
Wenn ich vorher die Zweite verwendet habe, verwendet das Objekt die Zweite, obwohl ich die Erste übergebe.

Zum Debuggen habe ich mir mal folgenden Code in das Objekt geschrieben geschrieben:

```
System.out.println("Datasource: "+ds);
Connection dbCon = ds.getConnection()) {
System.out.println("Connection: "+dbCon);
```

Die Ausgabe der Datasource zeigt immer die richtige URL zur ersten Datenbank an.
Sie Connection zeigt aber immer auf die Datenbank, die ich im Thread benutzt habe. Das heisst, habe ich nur die erste benutzt, steht dort die URL der ersten drin, habe ich vorher im Thread auch die zweite benutzt, steht dort die URL der zweiten Datenbank drin, obwohl die Datasource auf die richtige erste Datenbank zeigt.

Hat jemand eine Idee für dieses Verhalten.

Gruß Jens


----------



## Michael... (19. Nov 2012)

MrQ hat gesagt.:


> Hat jemand eine Idee für dieses Verhalten.


Fehler in der Zuweisung?


----------



## nillehammer (19. Nov 2012)

Evtl. DataSource in einer static Variablen gespeichert?


----------



## MrQ (22. Nov 2012)

Beides ist nicht der Fall. Ich bin das Problem erstmal umgangen, dass ich dem Objekt immer beide Datasourcen übergebe und nur die eine nutze.
Gruss Jens


----------

