`
haoningabc
  • 浏览: 1449334 次
  • 性别: 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  
不错,正在关注这个

相关推荐

Global site tag (gtag.js) - Google Analytics