hibernate - JDBC connection leak on JDBC pool when using AQ -


we using oracle aq support spring-data have both jms , jdbc on same datasource, local transactions instead of xa. big picture of our setup described in reference manual:on orcl:aq-jms-connection-factory: use-local-data-source-transaction="true" , native-jdbc-extractor="oraclenativejdbcextractor" hibernatetransactionmanager (i trying use single datasource(dbcp2 basic datasource) aq , hibernate).i using camel jms component (by using hibernate transaction manager , connection factory spring) jms operations. working, after couple of minutes indications jdbc connection pool exhausted , got stuck. in jdbc connection pool monitor, see connections in use: leaking connections. exhausted pool after minutes. same post here: https://jira.spring.io/browse/datajdbc-8

we using: dbcp2 basic datasource, hibernate 4, spring 4 hibernate transaction manager, spring data oracle aq, jboss 6 eap container.   <orcl:aq-jms-connection-factory id="connectionfactory"         use-local-data-source-transaction="true"         native-jdbc-extractor="dbcpnativejdbcextractor" 1         data-source="datasource" />      <bean id="dbcpnativejdbcextractor"          class="org.springframework.jdbc.support.nativejdbc. oraclejdbc4nativejdbcextractor"/>      <bean id="dbcpdatasource" class="org.apache.commons.dbcp.basicdatasource"              destroy-method="close">         <property name="driverclassname" value="${jdbc.driverclassname}" />         <property name="url" value="${jdbc.url}" />         <property name="username" value="${jdbc.username}" />         <property name="password" value="${jdbc.password}" />     </bean>  <bean id="txmanager"  class="org.springframework.orm.hibernate4.hibernatetransactionmanager">     <property name="sessionfactory" ref="sessionfactory" /> </bean>  <bean id="jms" class="org.apache.camel.component.jms.jmscomponent">         <property name="connectionfactory" ref="connectionfactory"/>         <property name="transacted" value="true"/>         <property name="transactionmanager" ref="txmanager"/>     </bean>  ideas? thank you. 

we had same problem dbcp in tomcat 8. reason data source default not allow access underlying native connection. code native connection extraction doesn't fail, continues return wrapped connection not native oracle connection. native connection wrapped in proxy passing close wrapped connection. when oracle aq code tries call oracle specific methods on connection proxy fails, , aq aborts leaks connection. fix allow access native connection using accesstounderlyingconnection=true in dbcp configuration.


Comments