Hi all:

My apologies for the spam and possible thread-jacking - not my
intention. This is a proper fresh email, which I should have sent out
first time.

Hopefully third time lucky - sorry all for the multiple emails.

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)

Reply via email to