-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: trotz session.close wird die session nicht geschlossen
PostPosted: Wed Aug 30, 2006 8:51 am 
Newbie

Joined: Wed Aug 30, 2006 8:27 am
Posts: 3
Quote:
Hallo, ich habe festgestellt, dass
hibernate die DB-Verbindung nicht schliesst, nachdem man
im Programm session.close ausgeführt hat.
Das hat zur Folge, dass man eine Applikation, die hibernate verwendet,
nicht undeployen bzw. redeployen kann.
Man muss zuerst den Applicationserver (i.d.F. JBoss bzw. Tomcat) beenden, auf dem die Applikation läuft. Erst dadurch wird die DB-Verbindung (=session) geschlossen.
Meine Einstellungen in hibernate.cfg.xml sind:
<property name="hibernate.connection.release_mode">auto</property>
<property name="show_sql">true</property>
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

Wie kann man hibernate dazu bewegen, die db-Verbingung nach session.close tatsächlich zu schliessen?

Viele Grüße
pkroman



Top
 Profile  
 
 Post subject:
PostPosted: Wed Aug 30, 2006 9:09 am 
Newbie

Joined: Fri Jul 28, 2006 11:22 am
Posts: 4
Probier doch mal die Verbindung explizit zu schliessen:

Code:
org.hibernate.Session session;

...

java.sql.Connection conn = session.close();
conn.close();



Hab's nicht getestet, aber vielleicht klappt das.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Aug 30, 2006 10:38 am 
Newbie

Joined: Wed Aug 30, 2006 8:27 am
Posts: 3
Hi,
Deine Lösung funktioniert leider nicht.
Session.close() liefert nömlich null zurück.

Nebenbei habe ich mir von hibernate ausgeben lassen, was nach dem Absetzen von session.close() alles passiert:

DEBUG [main] (SessionImpl.java:296) - closing session
DEBUG [main] (ConnectionManager.java:272) - performing cleanup
DEBUG [main] (ConnectionManager.java:333) - closing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
DEBUG [main] (DriverManagerConnectionProvider.java:129) - returning connection to pool, pool size: 1

Wie man sieht, wird die JDBC-Verbindung von ConnectionManager tatsächlich geschlossen, der DriverManagerConnectionProvider holt aber
diese Connection wieder in den Connectionpool.
Scheinbar orientiert sich hier Hibernate an der Einstellung in
hibernate.cfg.xml (pool_size=1).


Top
 Profile  
 
 Post subject:
PostPosted: Wed Aug 30, 2006 11:00 am 
Newbie

Joined: Wed Aug 30, 2006 8:27 am
Posts: 3
So,
ich hab's rausgefunden.
Man muss pool_size in hibernate.cfg.xml auf 0 setzen,
was allerdings in der produktiven Umgebung wegen der Performance nicht der Fall sein sollte. Ist aber zumindest in der Entwicklungsphase sehr hilfreich.

Der entsprechende Eintrag in hibernate.cfg.xml sieht dann so aus:

<property name="connection.pool_size">0</property>


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.