blob: 3ef5412c005af8baf155ada309850e713da4e7e2 [file] [log] [blame]
package com.alibaba.fescar.samples.tcc.sofarpc.starter;
import com.alibaba.fescar.common.util.StringUtils;
import com.alibaba.fescar.samples.tcc.sofarpc.ApplicationKeeper;
import com.alibaba.fescar.samples.tcc.sofarpc.service.TccTransactionService;
import org.apache.curator.test.TestingServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ImportResource;
import org.springframework.util.Assert;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author zhangsen
*/
@SpringBootApplication
@ImportResource("classpath:spring/*.xml")
public class SofaRPCTccTransactionApplication {
static TccTransactionService tccTransactionService = null;
public static void main(String[] args) throws Exception {
ApplicationContext applicationContext = SpringApplication.run(SofaRPCTccTransactionApplication.class, args);
tccTransactionService = (TccTransactionService) applicationContext.getBean("tccTransactionService" );
//分布式事务提交demo
transactionCommitDemo();
//分布式事务回滚demo
transactionRollbackDemo();
new ApplicationKeeper(null).keep();
}
private static void transactionCommitDemo() throws InterruptedException {
String txId = tccTransactionService.doTransactionCommit();
System.out.println(txId);
Assert.isTrue(StringUtils.isNotBlank(txId), "事务开启失败");
System.out.println("transaction commit demo finish.");
}
private static void transactionRollbackDemo() throws InterruptedException {
Map map = new HashMap();
try{
tccTransactionService.doTransactionRollback(map);
Assert.isTrue(false, "分布式事务未回滚");
}catch (Throwable t) {
Assert.isTrue(true, "分布式事务异常回滚");
}
String txId = (String) map.get("xid");
System.out.println("transaction rollback demo finish.");
}
}