# Play und JBDC



## Unlikus (16. Mrz 2014)

Habe ein paar Fragen bezüglich play und jdbc.
Wie wird der BoneCp Connetcionpool den play anbietet gehändelt? Wird er beim Start der Application einmal initialisiert?
Wenn ich nun eine Connection von ihm brauche, soll ich das in einer eigenen Klasse machen, mit einer Connection als statisches Feld, wenn ja wann wird diese Klasse initialisert und wann wieder gelöscht? Nur beim Start der play application oder bei jeden Request?


----------



## turtle (16. Mrz 2014)

Ich glaube hier findest du Hinweise, Tipps,etc.


----------



## Unlikus (16. Mrz 2014)

Der Text geht leider davon aus, dass man normale Servlets benutzt. Meine Fragen sind aber play-spezifisch, insbesondere die nach dem life-circle der Connection.


----------



## JavaMeister (16. Mrz 2014)

Du machst hier leider mehrere Fehler.

1. Du unterstellst jedem aus diesem Forum, dass er zunächst in play kennt und dann noch einen JDBC Connection Pool verwendet, den du verwendest.

2. Du denkst, dass das Play was anderes als Servlets sind.

==> Die Abstraktion in einer Web-Anwendung bedruht darauf, dass jeder call stateless ist. Ergo wäre es logisch anzunehmen, dass jede Verbindung nach Beantwortung der Anfrage geschlossen wird. Nun wird sie nicht geschlossen, sondern dem drunter liegenden Framework zum recyclen gegeben. Dieses entscheidet, was mit der konkreten Verbindung passiert.

In keinen dieser Fälle kannst Du davon ausgeehen, dass du die gleiche Connection bei konsekutiven Aufrufen erhälst.


----------



## Unlikus (16. Mrz 2014)

Ja aber es gibt ja wohl ein paar die play nutzen, und mir vielleicht weiterhelfen können.
klar baut play auf Serlevts auf, aber ich weiß leider nicht genau wie.
Und ich will auch keine Verbindung über mehrere Requests, sondern nur wissen, was mit (statischen)Klassen bei play passiert.


----------



## JavaMeister (16. Mrz 2014)

Ja statische Klassen bleiben eben statisch.

Diese Informatioen verbleiben in der JVM und können von jedem so verwendet werden.

In diesem Fall erhälst Du aber erhebliche Probleme bei Nebenläufigkeit.

Wieso man das machen will und muss ist jedoch fraglich. Hier liegt ein Designfehler vor.


----------



## turtle (16. Mrz 2014)

Da die Frage in Web Tier JSP, Servlets, JSF, Struts, AJAX gestellt war, habe ich Grundlegendes geantwortet.

Leider kenne ich mich mit dem Play-Framework nicht aus, sorry


----------



## Unlikus (16. Mrz 2014)

JavaMeister hat gesagt.:


> Ja statische Klassen bleiben eben statisch.
> 
> Diese Informatioen verbleiben in der JVM und können von jedem so verwendet werden.
> 
> ...



Das hab ich auch schon vermutet, aber wie soll ich es besser machen? Ich will für jeden Request eine Connection aus dem Pool nehmen und bei abschluss wieder dahin zurücklegen. Muss ich dazu die getConnetion und closeConnetion Anweisung im Controller machen, oder gibt es da andere Möglichkeiten?


----------

