From: Eric M. (JIRA) <no...@at...> - 2006-06-13 19:12:35
|
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1312?page=comments#action_23330 ] Eric Molitor commented on HHH-1312: ----------------------------------- There is the possibility of leaking resources with a poorly implemented JDBC driver when resultsets are not properly closed. (So the hygenic cleanup would be greatly appreciated.) To disable this behavior in JBoss open up the *-DS.xml file that you are using for Hibernate and set <track-statements>true</track-statements> to false. (Or just comment it out.) > Unclosed ResultSet when using Identity > -------------------------------------- > > Key: HHH-1312 > URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1312 > Project: Hibernate3 > Type: Bug > Components: core > Versions: 3.1 rc3, 3.1, 3.1 rc2 > Environment: JBoss 4.0.3SP1 > Hibernate 3.1rc2 > Java 1.5.0_06 > MSSQLServer 2000 > Reporter: Michael Samblanet > Priority: Minor > > > The code around AbstractEntityPersister.java line 1969 obtains a result set using GetGeneratedKeysHelper.getGeneratedKey > but the result set is never closed by this function nor the functions it calls. The issue was exposed by the > message below in JBoss 4.0.3 SP1. > This is an EJB3 application on JBoss using MSSQLServer 2000 and we are persisting an object with a primary key using an > identity data type. > A review of the Hibernate 3.1 source code seems to indicate it has the same issue. > 11:29:30,817 WARN [WrappedConnection] Closing a result set you left open! Please close it yourself. > java.lang.Throwable: STACKTRACE > at org.jboss.resource.adapter.jdbc.WrappedStatement.registerResultSet(WrappedStatement.java:572) > at org.jboss.resource.adapter.jdbc.WrappedStatement.getGeneratedKeys(WrappedStatement.java:501) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.hibernate.util.GetGeneratedKeysHelper.getGeneratedKey(GetGeneratedKeysHelper.java:59) > at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1969) > at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2404) > at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37) > at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:243) > at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269) > at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167) > at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101) > at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131) > at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87) > at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38) > at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:590) > at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:568) > at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:130) > at org.jboss.ejb3.entity.InjectedEntityManager.persist(InjectedEntityManager.java:97) > <snip> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |