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.