Play und JBDC

Unlikus

Mitglied
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?
 

Unlikus

Mitglied
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

Gesperrter Benutzer
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

Mitglied
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

Gesperrter Benutzer
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

Top Contributor
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:oops:
 

Unlikus

Mitglied
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.

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?
 

Neue Themen


Oben