`
haoningabc
  • 浏览: 1477149 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Atomikos spring例子

    博客分类:
  • java
阅读更多
下载AtomikosTransactionsEssentials-3.7.0M5-bin.zip
ojdbc14.jar,mysql-connector-java-5.0.8-bin.jar,spring.jar(2.0),log4j-1.2.14.jar,commons-logging.jar
工程类似,其实不是web工程

import.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" " http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans>
 	<bean id="mysqlDS"
		class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init"
		destroy-method="close">
		<description>mysql xa datasource</description>
		<property name="uniqueResourceName">
			<value>mysql_ds</value>
		</property>
		<property name="xaDataSourceClassName">
			<value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>
		</property>
		<property name="xaProperties">
			<props>
				<prop key="user">root</prop>
				<prop key="password">haoning</prop>
				<prop key="URL">jdbc:mysql://localhost:3306/test</prop>
			</props>
		</property>
	</bean>
	<bean id="oracleDS" class="com.atomikos.jdbc.AtomikosDataSourceBean"
		init-method="init" destroy-method="close">
		<description>oracle xa datasource</description>
		<property name="uniqueResourceName">
			<value>oracle_ds</value>
		</property>
		<property name="xaDataSourceClassName">
			<value>oracle.jdbc.xa.client.OracleXADataSource</value>
		</property>
		<property name="xaProperties">
			<props>
				<prop key="user">UNIFLOW</prop>
				<prop key="password">UNIFLOW</prop>
				<prop key="URL">jdbc:oracle:thin:@10.4.120.126:1521:E4CS</prop>
			</props>
		</property>
	</bean>
	<bean id="atomikosUserTransaction"
		class="com.atomikos.icatch.jta.UserTransactionImp">
		<description>UserTransactionImp</description>
		<property name="transactionTimeout" value="300"/>
	</bean>
	<bean id="atomikosTransactionManager"
		class="com.atomikos.icatch.jta.UserTransactionManager"
		init-method="init" destroy-method="close">
		<description>UserTransactionManager</description>
		<property name="forceShutdown">
			<value>true</value>
		</property>
	</bean>
	<bean id="springTransactionManager"
		class="org.springframework.transaction.jta.JtaTransactionManager">
		<description>JtaTransactionManager</description>
		<property name="transactionManager">
			<ref bean="atomikosTransactionManager" />
		</property>
		<property name="userTransaction">
			<ref bean="atomikosUserTransaction" />
		</property>
	</bean>
	<bean id="transactionProxyFactoryBean"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
		abstract="true">
		<property name="transactionManager">
			<ref bean="springTransactionManager" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
			</props>
		</property>
	</bean>
	<bean id="helloDao" class="com.jta.HelloDaoImpl">
		<property name="dataSource" ref="mysqlDS" />
	</bean>
	<bean id="worldDao" class="com.jta.WorldDaoImpl">
		<property name="dataSource" ref="oracleDS" />
	</bean>
	<bean id="helloBiz" class="com.jta.HelloBizImpl">
		<property name="helloDao" ref="helloDao" />
		<property name="worldDao" ref="worldDao" />
	</bean>
	<bean id="helloBizProxy" parent="transactionProxyFactoryBean">
		<property name="target">
			<ref bean="helloBiz" />
		</property>
	</bean>
</beans>

jta.properties
com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory
com.atomikos.icatch.console_file_name = tm.out
com.atomikos.icatch.log_base_name = tmlog
com.atomikos.icatch.tm_unique_name = com.atomikos.spring.jdbc.tm
com.atomikos.icatch.console_log_level = INFO 

package com.jta;
public interface HelloBiz {
	public void insertTwoDatabase() throws Exception;
}
package com.jta;
public class HelloBizImpl implements HelloBiz {
	private HelloDao helloDao;
	private WorldDao worldDao;
	public void insertTwoDatabase() throws Exception{
		this.getHelloDao().addHello();//mysql
		this.getWorldDao().addWorld();//oracle
	}
	public HelloDao getHelloDao() {
		return helloDao;
	}
	public void setHelloDao(HelloDao helloDao) {
		this.helloDao = helloDao;
	}
	public WorldDao getWorldDao() {
		return worldDao;
	}
	public void setWorldDao(WorldDao worldDao) {
		this.worldDao = worldDao;
	}
}
package com.jta;
public interface HelloDao {
	public void addHello() throws Exception;
}
package com.jta;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
public class HelloDaoImpl extends JdbcDaoSupport implements HelloDao{
	public void addHello() throws Exception{//mysql
		String sql = "insert into user(name,age) values(?,?)";   
        Object[] params = new Object[]{"test","12"};   
        this.getJdbcTemplate().update(sql, params); 
	}
}
package com.jta;
public interface WorldDao {
	public void addWorld() throws Exception;
}
package com.jta;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
public class WorldDaoImpl extends JdbcDaoSupport implements WorldDao {
	public void addWorld() throws Exception {// oracle
		String sql = "insert into test1(id,myname) values(?,?)";
		Object[] params = new Object[] { 3, "ningge" };
		this.getJdbcTemplate().update(sql, params);

	}
}
package com.jta;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
	public static void main(String[] args)throws Exception{
		ApplicationContext context=new ClassPathXmlApplicationContext("import.xml");
		HelloBiz helloBiz=(HelloBiz)context.getBean("helloBizProxy");
		helloBiz.insertTwoDatabase();		
	}
}

  • 大小: 46.3 KB
分享到:
评论
2 楼 onlyor 2012-03-31  
public void saveBoth(Student s, User u) throws Exception {
userDao.save(u);
studentDao.save(s);
throw new Exception();
}


我测试了,到保存了。。。。
1 楼 风之狐 2011-02-24  
不错,正在关注这个

相关推荐

    使用Spring+atomikos实现分布式事务

    Spring框架提供了强大的支持来处理分布式事务,而Atomikos是一个开源的事务管理器,专门用于处理JTA(Java Transaction API)事务,尤其适用于微服务和分布式环境。本教程将探讨如何结合Spring和Atomikos来实现...

    atomikos-Spring-Mybatis

    "atomikos-Spring-Mybatis" 项目结合了 Atomikos、Spring 和 Mybatis 三大框架,旨在创建一个支持分布式事务处理的后端服务。 Spring 框架是 Java 应用开发中广泛使用的轻量级容器,它提供了依赖注入(Dependency ...

    spring+hibernate+atomikos多数据源

    Spring、Hibernate和Atomikos的组合就是一种强大的解决方案,它们可以协同工作以支持多数据源的分布式事务处理。接下来,我们将深入探讨这些技术以及如何配置它们来实现多数据源。 1. **Spring**: Spring是一个...

    spring+mybatis+atomikos配置文件及相关包

    在IT行业中,Spring、MyBatis和Atomikos是三个重要的技术组件,它们在构建分布式事务处理系统中发挥着关键作用。Spring是一个广泛使用的Java应用框架,提供了丰富的依赖注入、AOP(面向切面编程)等功能,使得应用...

    atomikos-Spring-Mybatis(Oracle,Mysql)

    Atomikos 是一款开源的事务处理管理器,它支持分布式事务处理,特别是在Java应用程序中,如Spring和Mybatis框架的整合。本项目“atomikos-Spring-Mybatis(Oracle,Mysql)”着重于在Spring和Mybatis框架下,结合Oracle...

    Spring+MyBatis+Atomikos实现JTA分布式事务

    本文将深入探讨如何使用Spring、MyBatis和Atomikos实现JTA分布式事务。 首先,让我们理解JTA的概念。Java Transaction API(JTA)是Java EE规范之一,用于处理分布式环境中的事务。它允许应用程序在不同的资源管理...

    tr-test:atomikos spring activemq jta oracle

    测试atomikos spring activemq jta oracle 为了最大限度地恢复和关闭/重启能力,强烈建议您使用以下 init 依赖项配置 Spring 配置: 使事务管理器依赖于您所有的 JDBC 和 JMS 连接工厂:这可确保在关闭期间事务管理...

    java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip

    本项目"java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip"是一个基于若依(RuoYi)框架改造的多模块分布式事务解决方案,它利用了Atomikos这一强大的分布式事务管理器。以下将详细解析这个项目的知识点...

    spring + JTA + atomikos 实现分布式事务

    Atomikos 是一个开源的JTA实现,它为Spring提供了一个轻量级、高性能的分布式事务解决方案。本文将深入探讨如何使用Spring、JTA和Atomikos来实现分布式事务。 首先,了解JTA的基本概念。JTA定义了一套规范,允许在...

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    下面我们将详细探讨如何利用Spring、Druid和AtomikosDataSource来实现这些功能。 1. **Spring框架与数据源** Spring提供了对多种数据源的支持,包括JDBC DataSources和Transaction Managers。通过Spring的配置,...

    spring+jpa+atomikos多数据源

    "spring+jpa+atomikos多数据源"是一个重要的技术组合,用于构建能够同时连接并操作不同数据库的应用程序。下面将详细介绍这个主题涉及的知识点。 首先,Spring框架是Java开发中最广泛使用的轻量级框架,提供依赖...

    spring+mybatis+atomikos配置文件及相关包(最新版)

    本资源"spring+mybatis+atomikos配置文件及相关包(最新版)"提供了整合Spring、MyBatis和Atomikos的配置文件和相关库,以支持在分布式环境下的事务管理。下面将详细解释这三个组件以及它们在分布式事务中的作用。 ...

    spring+mybatis+atomikos配置所需包跟配置文件

    综上所述,Spring、MyBatis和Atomikos的集成主要涉及JTA标准的运用、Atomikos的配置以及Spring的事务管理。通过这种方式,可以实现在分布式环境下的事务一致性,确保多数据源操作的正确性。在实际开发中,根据具体的...

    Spring+SpringMVC+MyBatis+Atomikos整合

    本教程主要关注如何将Spring、SpringMVC、MyBatis和Atomikos这四个组件进行整合,以实现多数据源的分布式事务处理。 首先,Spring是Java领域广泛应用的依赖注入(DI)和面向切面编程(AOP)框架,它允许开发者轻松...

    spring4+atomikos实现分布式事务

    在这个案例中,我们将深入探讨如何使用Spring 4与Atomikos来实现跨数据库的分布式事务管理。 Atomikos是一款开源的事务处理监控器(Transaction Processing Monitor,TPM),它支持JTA(Java Transaction API)标准...

    spring + hibernate + atomikos + mysql (diff database)

    标题 "spring + hibernate + atomikos + mysql (diff database)" 涉及的是一个集成开发环境,其中Spring是Java企业级应用的核心框架,Hibernate是一个流行的ORM(对象关系映射)解决方案,Atomikos是一个开源的JTA...

    Spring4+Hibernate4+Atomikos3.3多数据源事务管理

    本主题将探讨“Spring4+Hibernate4+Atomikos3.3多数据源事务管理”的相关知识点,这是一种实现分布式事务处理的有效方案。 首先,Spring框架是Java企业级应用中的核心组件,它提供了一个统一的依赖注入容器,简化了...

    spring搭建分布式事务所需嘉宝atomikos加druid配置分布式事务

    Spring框架提供了多种实现分布式事务管理的方式,其中一种是通过集成第三方工具如Atomikos来实现。Atomikos是一个开源的事务处理服务,支持JTA(Java Transaction API),能很好地处理分布式环境中的ACID(原子性、...

    spring+mybatis+atomikos配置文件及相关包.rar

    《Spring+Mybatis+Atomikos 配置与集成详解》 在分布式系统中,事务管理是至关重要的,尤其在微服务架构下。本篇文章将深入探讨如何在Spring框架中结合Mybatis和Atomikos进行分布式事务管理的配置与集成。Atomikos...

    Spring多数据源atomikos所有jar包

    接下来,描述中提到的"Spring多数据源atomikos所有jar包.pdf"很可能是包含详细的步骤和配置示例的文档,这份文档可能涵盖了如何在Spring项目中添加和配置Atomikos的jar包,以及如何进行多数据源的设置。通常,我们...

Global site tag (gtag.js) - Google Analytics