You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by gip_ <gi...@accenture.com> on 2008/12/22 17:57:03 UTC
Re: Spring with IBatis and Transaction Manager Helps.
However the post is old, I post how I solved your same problem.
Try to add this property to the datasource to disable autocommit:
<property name="defaultAutoCommit">
<value>false</value>
</property>
Regards,
Gip
bala r wrote:
>
> Hi Brian,
>
> I added the rollback-for atrribute to handle rollback if there are any
> errors .
> <tx:method name="doProcess*" read-only="true"
> rollback-for="com.workflow.exceptions.MultipleErrorsException"/>
>
> Here is the AOPconfig. The transactionProcessors is the service layer
> which
> calls DAO to insert/Update..
> <aop:config>
> <aop:pointcut id="daoServiceOperation" expression="execution(*
> com.processors.TransactionProcessor.*.*(..))" />
> <aop:advisor advice-ref="txAdvice"
> pointcut-ref="daoServiceOperation" />
> </aop:config>
>
> For testing right after Insert/Update i throw MultipleErrorsException to
> verify the rollback. But rollback is not happening and the transacation is
> being commited.
>
> I need to handle Rollback After DAO call my transaction processor also
> calls
> someother workflow processor. If there are any errors in teh other
> workflows
> then i need to rollback the transaction..
>
> Any ideas how to handle transaction here?
>
> Thanks
> Bala
>
>
>
> On Fri, Aug 22, 2008 at 11:04 AM, bala r <ba...@gmail.com> wrote:
>
>> Hi Brian,
>>
>> Thank you so much.. I will try your config.. I want to handle the
>> transaction in the Service layer not in DAO.
>> I will implement the same config and call the AOP in the service layer.
>>
>> Thanks
>> Bala.
>>
>>
>> On Fri, Aug 22, 2008 at 7:36 AM, Brian Parkinson
>> <pa...@avaning.com>wrote:
>>
>>> Hi Bala:
>>>
>>> I am using Spring with iBatis with transations. Below is the config that
>>> I
>>> am using - note the use of the spring tx:* AOP transaction injection.
>>> There
>>> are docs in the spring project related to how to set this up (mine below
>>> is
>>> pretty much a copy of that example).
>>>
>>> Hope it helps.
>>>
>>> Brian Parkinson.
>>>
>>> --- x8 snip
>>>
>>> SqlMapConfig contains:
>>>
>>> <transactionManager type="EXTERNAL">
>>> <dataSource type="DBCP">
>>> </dataSource>
>>> </transactionManager>
>>>
>>> Spring transactions:
>>>
>>> <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>
>>>
>>> Spring datasource:
>>>
>>> <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.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
>>> <property name="targetDataSource">
>>> <ref local="dataSourceImpl"/>
>>> </property>
>>> </bean>
>>>
>>> <bean id="dataSourceImpl"
>>> 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="XXX" />
>>> <property name="password" value="YYY" />
>>> <property name="initialSize" value="10" />
>>> <property name="maxActive" value="100" />
>>> <property name="maxIdle" value="16" />
>>> <property name="maxWait" value="2000" />
>>> </bean>
>>>
>>> <bean id="sqlMapClient"
>>> class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
>>> <property name="dataSource" ref="dataSource" />
>>> <property name="configLocation" ref="mapConfig" />
>>> </bean>
>>>
>>>
>>>
>>>
>>> ------------------------------
>>> *From:* bala r [mailto:balar4u@gmail.com]
>>> *Sent:* Thursday, August 21, 2008 4:10 PM
>>> *To:* user-java@ibatis.apache.org
>>> *Subject:* Spring with IBatis and Transaction Manager Helps.
>>>
>>> Hi,
>>>
>>> I have to implement TransacationManager in my module using Spring with
>>> Ibatis.
>>>
>>> Here is my requirments.
>>>
>>> TransacationProcessor -
>>> --Open Transacation
>>> --Call LoopProcessor(process multiple files )
>>> --- Call DatabaseProcessor
>>> -- Call SQLMqpClient Insert/update/delete.
>>> -- Call OtherProcessor do Work.
>>> --All Success then Committransaction.
>>> -- If fails rollbackTransacation.
>>> --End Transaction.
>>>
>>> Any documents for handling Spring and Ibaris or any examples i can get
>>> from any source?
>>> I tried google Spring with Ibatis transaction but couldnt find any much
>>> information.
>>>
>>> Thanks
>>> bala.
>>>
>>
>>
>
>
--
View this message in context: http://www.nabble.com/Spring-with-IBatis-and-Transaction-Manager-Helps.-tp19095933p21131106.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.