使用Atomikos配置jta来实现activiti和业务数据库事务性

本文介绍了在遇到Activiti流程引擎与业务数据库事务处理不一致的问题时,如何通过引入Atomikos并配置JTA来实现跨数据库的事务管理。通过详细配置示例,展示了如何设置两个独立的数据源(业务数据库和Activiti数据库),并使用同一事务管理器transactionManager,确保在异常情况下能够同时回滚所有操作。
摘要由CSDN通过智能技术生成

在最开始使用spring配置activiti时,并没有考虑到业务数据源和activiti本身数据库的事务性问题。在写到某一部分,业务抛出异常,业务数据库回滚了,而这里acitivi本次节点任务却无法回滚。在最开始配置acitiviti时配置文件如下:

 <bean id="dataSourceActiviti" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close">
        <property name="driverClassName" value="${process.driver}" />
        <property name="url" value="${process.url}" />
        <property name="username" value="${process.username}" />
        <property name="password" value="${process.password}" />
<!--     初始化连接大小  -->
        <property name="initialSize" value="${process.initialSize}"></property>
<!--      连接池最大数量   -->
        <property name="maxActive" value="${process.maxActive}"></property>
<!--         连接池最大空闲   -->
        <property name="maxIdle" value="${process.maxIdle}"></property>
<!--         连接池最小空闲   -->
        <property name="minIdle" value="${process.minIdle}"></property>
<!--         获取连接最大等待时间 -->
        <property name="maxWait" value="${process.maxWait}"></property>
    </bean>     
      <bean id="transactionManagerActiviti" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
       <property name="dataSource" ref="dataSourceActiviti"></property>  
    </bean>    
<!--     Activiti引擎配置 -->
    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">   
        <property name="dataSource" ref="dataSourceActiviti" />
        <property name="transactionManager" ref="transactionManagerActiviti" />      
        <property name="databaseSchemaUpdate" value="true" />
        <property name="deploymentResources" value="classpath*:/activiti/heautyProcess.bpmn"></property>
        </bean>
<!--     Activiti引擎工厂 -->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration" />
    </bean>
<!--     Activiti的Service  -->
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
    <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
    <bean id="formService" factory-bean="processEngine" factory-method="getFormService" />
    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" />
    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
    <bean id="historyService" factory-bean="processEngine" factory-method

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值