Hey Brian, Please dont reply when you have to ask the community on a new issue. Please create a new email and write down the issue there. This is to prevent thread hijacking.
http://en.wikipedia.org/wiki/Thread_hijacking Thanks -Sundar On Mon, Aug 18, 2008 at 12:59 PM, Brian Parkinson <[EMAIL PROTECTED]> wrote: > Hi all: > > I'm using iBatis 2.3.3.720 and Spring and dbcp 1.2.2. All seems to be > well, but sometimes I see an exception related to "Connection.close() > has already been called". > > When this happens, the server is pretty much borked - any new database > access results in the exception. > > I never call close() in my code - unsure what's going on here. A quick > inspection of my logs didn't reveal anything... > > Does anyone have any clues? > > Any help is appreciated. > > <bean id="mapConfig" > class="org.springframework.core.io.ClassPathResource"> > <constructor-arg> > > <value>com/ecobee/foundation/dao/ibatis/SqlMapConfig.xml</value> > </constructor-arg> > </bean> > <bean id="dataSource" > class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> > <property name="driverClassName" > value="com.mysql.jdbc.Driver" /> > <property name="url" value="jdbc:mysql:///ecobee" /> > <property name="username" value="ecobee" /> > <property name="password" value="ecobee" /> > <property name="initialSize" value="10" /> > <property name="maxActive" value="64" /> > <property name="maxIdle" value="16" /> > <property name="maxWait" value="1000" /> > </bean> > <bean id="sqlMapClient" > class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> > <property name="dataSource" ref="dataSource" /> > <property name="configLocation" ref="mapConfig" /> > </bean> > > <bean id="txManager" > class="org.springframework.jdbc.datasource.DataSourceTransactionManager" > > > <property name="dataSource" ref="dataSource"/> > </bean> > <tx:advice id="txAdvice" transaction-manager="txManager"> > <tx:attributes> > <tx:method name="get*" read-only="true" /> > <tx:method name="*" /> > </tx:attributes> > </tx:advice> > <aop:config> > <aop:pointcut id="daoServiceOperation" > expression="execution(* com.ecobee.foundation.dao.ibatis.*.*(..))" /> > <aop:advisor advice-ref="txAdvice" > pointcut-ref="daoServiceOperation" /> > </aop:config> > > Thanks. > > Brian Parkinson > > ----------- x8 snip > > ERROR 15:45:16:428 Error selecting user from dataabase. > {foundation.schedule.DbConnectionPing.executeTask} > > Message: Could not open JDBC Connection for transaction; nested > exception is > com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: > Connection.close() has already been called. Invalid operation in this > state. > > Trace org.springframework.transaction.CannotCreateTransactionException: > org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin > (DataSourceTransactionManager.java:238) > org.springframework.transaction.support.AbstractPlatformTransactionManag > er.getTransaction(AbstractPlatformTransactionManager.java:377) > org.springframework.transaction.interceptor.TransactionAspectSupport.cre > ateTransactionIfNecessary(TransactionAspectSupport.java:261) > org.springframework.transaction.interceptor.TransactionInterceptor.invok > e(TransactionInterceptor.java:101) > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref > lectiveMethodInvocation.java:171) > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(E > xposeInvocationInterceptor.java:89) > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref > lectiveMethodInvocation.java:171) > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAo > pProxy.java:204) > $Proxy5.getUser(Unknown Source) > > >>> > com.ecobee.foundation.schedule.DbConnectionPing.executeTask(DbConnection > Ping.java:27) > > com.ecobee.foundation.schedule.ScheduledService.executeSchedule(Schedule > dService.java:38) > sun.reflect.GeneratedMethodAccessor287.invoke(Unknown Source) > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor > Impl.java:25) > java.lang.reflect.Method.invoke(Method.java:597) > org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:275) > org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean > $MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.ja > va:272) > org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBea > n.java:86) > org.quartz.core.JobRunShell.run(JobRunShell.java:202) > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java > :529) > Message: Connection.close() has already been called. Invalid operation > in this state. > Nested exception trace > com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: > com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888) > com.mysql.jdbc.Connection.getMutex(Connection.java:3728) > com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5365) > org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingCon > nection.java:331) > org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.set > AutoCommit(PoolingDataSource.java:317) > org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin > (DataSourceTransactionManager.java:221) > org.springframework.transaction.support.AbstractPlatformTransactionManag > er.getTransaction(AbstractPlatformTransactionManager.java:377) > org.springframework.transaction.interceptor.TransactionAspectSupport.cre > ateTransactionIfNecessary(TransactionAspectSupport.java:261) > org.springframework.transaction.interceptor.TransactionInterceptor.invok > e(TransactionInterceptor.java:101) > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref > lectiveMethodInvocation.java:171) > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(E > xposeInvocationInterceptor.java:89) > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref > lectiveMethodInvocation.java:171) > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAo > pProxy.java:204) > $Proxy5.getUser(Unknown Source) > > >>> > com.ecobee.foundation.schedule.DbConnectionPing.executeTask(DbConnection > Ping.java:27) > > com.ecobee.foundation.schedule.ScheduledService.executeSchedule(Schedule > dService.java:38) > sun.reflect.GeneratedMethodAccessor287.invoke(Unknown Source) > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor > Impl.java:25) > java.lang.reflect.Method.invoke(Method.java:597) > org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:275) > org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean > $MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.ja > va:272) > org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBea > n.java:86) > org.quartz.core.JobRunShell.run(JobRunShell.java:202) > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java > :529) > >