Hallo,
ich habe folgendes Problem.
Mein Programm greift auf zwei verschiedene Datenbanken zu.
Dafür erzeuge ich in meiner Hauptklasse zwei Datasourcen:
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:
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
ich habe folgendes Problem.
Mein Programm greift auf zwei verschiedene Datenbanken zu.
Dafür erzeuge ich in meiner Hauptklasse zwei Datasourcen:
Java:
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:
Java:
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