ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sundar Sankar" <fatboys...@gmail.com>
Subject Re: Manual for Ibatis
Date Mon, 18 Aug 2008 20:09:45 GMT
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 <parki@avaning.com> 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)
>
>

Mime
View raw message