Datenbankhandle mitschleifen

JName

Grünschnabel
Hallo,

vielleicht hab ich unter den falschen Begriffen bisher gesucht oder ich habe ein Verständnisproblem.

Ich habe unter Netbeans eine Web-application (Package mit 2 Servlets und eine DB Klasse, sowie 2 jsp Seiten.

Im Servlet1 lasse ich unter init() eine Datenbankverbindung aufmachen.
Bevor JSP1 dispatchd wird, setze ich ein RequestAttribut vom Typ Resultset, welches in der JSP1 dann erst "gefetcht" wird;

Die Datenbankverbindung wird nicht geschlossen.

JSP1 linkt auf Servlet2.

Was muss ich jetzt wie/wo angeben, dass im init() von Servlet2 die
schon bestehende Datenbankverbindung gesetzt/genutzt werden kann und nicht, so wie ich es bisher habe eine Neue aufgemacht wird (MY-SQL Admin->Benutzerverbindungen sind dann 2 verbindungen für den user zu sehen).

Kann ich irgendwie das DB-Handle per Session/Attribut übergeben? Selbstversuche klappten bisher nicht.

Danke soweit.
 
hi,


Problem hat sich erledigt. Hatte nur vergessen in der init() von den Servlets meine Datenbankklasse zu instanzieren, sodass die DB connection aus der Session nicht richtig gesetzt werden konnte. Es wird jetzt nur noch eine DB connection eröffnet
und über die Servlets hinweg offen gehalten.

cu
JName
 
Les ich das grad richtig? Du hältst die DB Connection über den ganzen Lebenszeitraum des Servlets offen? D.h. von initialisierung bis zum runterfahren? Grausam. Die Connection in der Session zu halten ist dann noch ein Schritt grausamer ;).

Oder rufst du früh deine Freundin an und legst den ganzen Tag den Hörer nicht wieder auf bis du abends ins Bett gehst? ;)

Im allgemeinen solltest du pro Request "um eine Connection bitten". Wie die dann zustande kommt sollte nicht in der Aufgabe des Servlets liegen sondern z.B. an eine DataSource implementierung (aus commons-dbcp Bibliothek) delegiert werden, die dann evtl. Connections poolt, erzeugt, wegwirft, whatever.

Gruß
Ollie
 

Neue Beiträge

Zurück