# verbindung / connection in session speichern



## Java.getSkill() (24. Jan 2010)

Hallo,

Ich bin recht neu in JSP und es ist eine noobfrage, aber ich frage mich ob ich einer session eine connection zuweisen kann, damit nicht ständig alle paar sekunden connection auf- und zugemacht werden muss, oder ob ich bei jedem Zugriff auf Datenbank eine neue erzeugen muss.

Wenn ich nun in einem servlet die connection aufbaue, und dann nicht connection.close(), wie kann ich dann auf der "nextSeite.jsp" diese connection weiter für sql abfragen benutzen?


----------



## Atze (24. Jan 2010)

du legst die verbindung nach dem erzeugen in die session

request.getSession().setAttribute("con", connection);

und holst sie bei bedarf wieder raus

connection = request.getSession().getAttribute("con");

aber wenn der benutzer den browser schließt, wird sie wohl nicht geschlossen. daran solltest du auch denken


----------



## Java.getSkill() (24. Jan 2010)

Danke,

hatte das heute in der früh um 3:00 schon, aber ohne Cast und paar falsche Zeilen auskommentiert ^^

session.setAttribute("con",con);

con=(Connection)session.getAttribute("con");

Wie ist denn nun das Standardverfahren, wenn es um das Handhaben der Connection geht?

Auf jeder Seite neu aufbauen? Connection offen lassen und warten bis session beendet oder Browser geschlossen=irgendwann session timeout? Wenn Seite 1, Seite 2 und Seite 3 kurzen zusammenhängenden Prozess beschreiben/darstellen, dann bei Seite 1 connection in session speichern und dann am Ende von Seite 3 die connection.close() ? Das bedeutet aber auch, dass ich Seite 3 nicht mit F5 aktualisieren kann, da ja ein connection.close() beim ersten Aufruf der Seite3 stattgefunden hat.


----------



## Atze (24. Jan 2010)

stimmt, das casten hatte ich vergessen  

ob es da ein standardverfahren gibt weiß ich nicht, aber du solltest die con nur so lange aufrechterhalten, wie es unbedingt nötig ist, um nicht zu viele "sinnlose" verbindungen gleichzeitig handlen zu müssen. außerdem ist das ja auch ne datenbanksache, wieviele die überhaupt zulässt.

wenn du sie über alle seiten brauchst, ist es wohl nötig, aber besser wäre es, wenn du erst alle daten, die du für die db brauchst, sammelst und sie dann auf einen rutsch in die datenbank schreibst, bspw auf / nach seite 5.


----------



## Antoras (24. Jan 2010)

Stichwot: Connection Pool

Du erzeugst beim Start deiner Webapplikation eine bestimmte Anzahl an Connections. Diese speicherst du nun in einem Pool ab, aus dem du bei einem Request einfach eine Connection nimmst. Je nach Anzahl der Requests kannst du natürlich auch die Anzahl der offenen Connections skalieren. Nachdem der Request verarbeitet wurde legst du dann die Connection wieder in den Pool bzw. gibst sie für einen anderen Request wieder frei.


----------

