Sollte ich die von JNDI erhaltene Datenquelle schließen?

8

Update: Offenbar schließt Tomcat, beginnend mit 7.0.11, die DataSource für Sie, daher ist sie nicht in der contextDestroyed-Datei der Webanwendung verfügbar. Siehe: Ссылка

Hallo,

Ich verwende Spring 3.0 und Java 1.6.

Wenn ich eine Datenquelle auf diese Weise bekomme:

%Vor%

dann wird die Datenquelle geschlossen, wenn die Bean zerstört wird.

Wenn ich die Datenquelle so bekomme:

%Vor%

muss ich dann explizit die Datenquelle in meinem ContextDestroyed Listener schließen?

Danke,

Paul

    
Paul 23.03.2011, 15:22
quelle

3 Antworten

5

Ich stimme nicht zu. Ich würde Ihrer web.xml einen Listener hinzufügen und die contextDestroyed () -Methode implementieren. Diese Methode wird von Ihrem Webcontainer / Anwendungsserver aufgerufen, wenn die Webanwendung zerstört oder nicht bereitgestellt wird. Innerhalb der contextDestroyed () würde ich die Datenquelle schließen.

in der web.xml

%Vor%

Der Code:

%Vor%     
sarcastictrade 24.03.2011, 18:41
quelle
4

Nein. Das DataSource wird hier vom entfernten JNDI-Container verwaltet, und es ist der Job dieses Containers, den Lebenszyklus von DataSource zu verwalten. Der Frühling macht nur Gebrauch davon, es schafft es nicht.

Selbst wenn du es wolltest, könntest du nicht - DataSource hat keine close() -Methode oder etwas ähnliches.

    
skaffman 23.03.2011 16:15
quelle
1

Wenn Sie die Datenquelle über eine JNDI-Suche abrufen, wird eine freigegebene Ressource in Ihrem Container konfiguriert. Es wird vom Container und nicht von der Anwendung verwaltet, daher ist es nicht erforderlich (es besteht keine Möglichkeit), es zu schließen.

    
gkamal 23.03.2011 16:12
quelle