Hibernate-session.close () - nicht wieder Verbindung zum pool
Meine Bewerbung Transaktionen mit langer Laufzeit und daher habe ich versucht die option session.close() am Ende jeder Methode, um sicherzustellen, dass die connection-Objekte werden nicht auf unbestimmte Zeit festgehalten für lange Zeit.
Wenn die Sitzung.close () - option verwendet wird, konnte ich sehen, dass der Hibernate-session-Objekt und dem entsprechenden Connection-Objekt erhalten aus der Sitzung.Verbindung() zerstört werden, sind richtig. Aber das Problem mit dem connection-pool. Die Verbindung, die durch die Sitzung wird nicht veröffentlicht, Sie wieder an den Verbindungspool auch nach schließen der Sitzung. Andere Anfragen gefunden werden, warten für die Verbindung aus dem pool.
Ich bin mit JTA-Transaktion in meiner Anwendung. In hibernate.cfg.xml habe ich Verbindung.release_mode auf auto (default) und-Verbindung.autocommit auf "true".
Hat jemand konfrontiert dieses Problem? Bitte lassen Sie mich wissen, was vermisse ich hier.
Follow-up: Dies ist mein hibernate-Konfigurationsdatei details:
<property name="connection.datasource">MXoraDS</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.release_mode">after_statement</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WeblogicTransactionManagerLookup</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property name="hibernate.current_session_context_class">org.hibernate.context.JTASessionContext</property>
<property name="transaction.auto_close_session">true</property>
<property name="max_fetch_depth">2</property>
Verwenden wir JSF und EJB 2.1 auf der Anwendungs-Schicht, mit Anbindung an Oracle DB. Die after_statement
scheint nicht zum lösen der Verbindung an den pool. Bitte lassen Sie mich wissen, wenn u brauchen mehr details.
InformationsquelleAutor der Frage Perfuser123 | 2010-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man versuchen zu definieren, die
hibernate.connection.release_mode
Eigenschaftafter_statement
explizit? Ich weiß, das ist eigentlich Standard, aber je nach Ihrem Kontext (könnten Sie mit Frühling?),auto
könnte nicht Verhalten wie erwartet (siehe hier und hier).Referenz, hier ist, was die Tabelle 3.4. Hibernate JDBC-und Verbindungseigenschaften schreibt über die Eigenschaft
hibernate.connection.release_mode
:Wenn es nicht hilft, bitte fügen Sie weitere details über Ihre Umgebung und die Konfiguration (Frühling?), wie erhalten Sie die Sitzung, etc.
InformationsquelleAutor der Antwort Pascal Thivent
wenn Sie die JDBCTransactionManager, die Verbindung wieder in den connectionpool, wenn die Transaktionen enden.
InformationsquelleAutor der Antwort Salandur