Hibernate session.close () ne renvoie pas la connexion au pool
Ma demande a longtemps transactions en cours d'exécution, et donc j'ai essayé l'option de session.close() à la fin de chaque méthode pour s'assurer que les objets de connexion ne sont pas tenus indéfiniment pour longtemps.
Lors de la session.close() de l'option, j'ai pu voir que l'Hibernation de la session de l'objet et de la Connexion correspondante de l'objet obtenu à partir de la session.connexion() sont détruits correctement. Mais le problème est avec le pool de connexion. La connexion obtenue par la session n'est pas remis pour le pool de connexion, même après la fermeture de la session. D'autres demandes sont trouvés en attente d'une connexion à partir de la piscine.
Je suis en utilisant la transaction JTA dans mon application. Dans hibernate.cfg.xml j'ai réglé la connexion.release_mode de auto (par défaut) et de connexion.validation automatique de vrai.
Quelqu'un a été confronté à ce problème? S'il vous plaît laissez-moi savoir ce qui me manque ici.
Suivi: C'est mon fichier de configuration hibernate détails:
<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>
Nous utilisons JSF et EJB 2.1 pour l'application de la couche de connexion à Oracle DB. Le after_statement
ne semble pas à la libération de la connexion à la piscine. S'il vous plaît laissez-moi savoir si vs avez besoin de plus de détails.
source d'informationauteur Perfuser123
Vous devez vous connecter pour publier un commentaire.
Pourriez-vous essayer de définir le
hibernate.connection.release_mode
propriétéafter_statement
explicitement? Je sais que c'est censé être le défaut, mais, en fonction de votre contexte (pourriez-vous être à l'aide de Printemps?),auto
peut ne pas se comporter comme prévu (voir ici et ici).Pour référence, voici ce que le Le tableau 3.4. Hibernate, JDBC et les Propriétés de la Connexion écrit à propos de la propriété
hibernate.connection.release_mode
:Si cela n'aide pas, veuillez ajouter plus de détails à propos de votre environnement et de la configuration de Printemps (?), comment vous obtenez la session, etc.
si vous utilisez le JDBCTransactionManager, la connexion sera retourné à l'connectionpool lorsque l'opération se termine.