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

多数据源 更新 spring jta java jotm

阅读更多

 多数据源 更新 spring jta java  jotm

 

代码下载 :http://download.csdn.net/download/knight_black_bob/8816323

 

对比 下面的 多数据库操作   http://knight-black-bob.iteye.com/blog/2212872

 

大家 可以 感受一下 优缺点………

 

 

 

 applicationContext.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
	default-autowire="byName"		
	>

 	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations" value="classpath:db-config.properties"></property>
    </bean>
    
	<!-- 引用Spring内部所提供的对JOTM支持的工厂类 -->
	<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" />
	
	<!-- 配置JTA事务管理器, 并在管理器中使用上面所配置的JOTM -->
	<bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
		<property name="userTransaction" ref="jotm" />
	</bean>
	
	<!-- 配置多个数据源 -->
	<!--第一个数据源,采用XAPool链接池-->  
	<bean id="dataSourceA" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">  
		<property name="dataSource">  
			<bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">  
				<property name="transactionManager" ref="jotm" />  
				<property name="driverName" value="${driverClassName}" />
				<property name="url" value="${url1}" />
			</bean>  
		</property>  
		<property name="user" value="${username1}" />
		<property name="password" value="${password1}" /> 
	</bean> 
	 
	<!--第二个数据源,采用XAPool链接池-->  
	<bean id="dataSourceB" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">  
		<property name="dataSource">  
			<bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">  
				<property name="transactionManager" ref="jotm" />  
				<property name="driverName" value="${driverClassName}" />
				<property name="url" value="${url2}" />
			</bean>  
		</property>  
		<property name="user" value="${username2}" />
		<property name="password" value="${password2}" /> 
	</bean> 
	
	<!-- 根据不同的数据源配置两个jdbcTemplate -->
	<bean id="jdbcTemplateA" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSourceA" />
	</bean>

	<bean id="jdbcTemplateB" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSourceB" />
	</bean>
	
	
	<!-- JTA事务传播特性 -->
    <tx:advice id="txAdviceJTA" transaction-manager="txManager">
        <tx:attributes>
        	<tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
        	<tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="create*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="insert*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="del*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
            <tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
        	<tx:method name="*" read-only="true"/> 
        </tx:attributes>
    </tx:advice>
    
    <aop:config>
        <aop:advisor pointcut="execution(* com.baoy.service..*(..))"   advice-ref="txAdviceJTA" />
    </aop:config> 
	  
</beans>

 

 applicationContext-dao.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
	default-autowire="byName"		
	>


 	<bean id="userDao" class="com.baoy.daoImpl.UserDaoImpl">  
		<property name="jdbcTemplate" ref="jdbcTemplateA" /> 
	 </bean>  
	 
	 <bean id="providerDao" class="com.baoy.daoImpl.ProviderDaoImpl">  
		<property name="jdbcTemplate" ref="jdbcTemplateB" /> 
	 </bean>  
	  
	
	 
	 
	 
	 
</beans>

 

 applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
	default-autowire="byName"
	>

	<bean id="userService" class="com.baoy.serviceImpl.UserServiceImpl"></bean>
	 
	 
	
</beans>

 

 

 

 applicationContext-action.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
	default-autowire="byName"		
	>

    <bean id="userAction" class="com.baoy.action.UserAction" scope="prototype"></bean>
    
  
  

</beans>

 

 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee"
	xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	id="WebApp_9" version="2.4">
	
	<context-param>
	    <param-name>contextConfigLocation</param-name>
	    <param-value>classpath:applicationContext*.xml</param-value>
    </context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

 

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>/common/index.jsp</welcome-file>
	</welcome-file-list>
	
</web-app>

 

 

package com.baoy.action;

import com.baoy.base.action.BaseAction;
import com.baoy.bean.User;
import com.baoy.service.UserService;


public class UserAction extends BaseAction{

	private UserService  userService;
	
	public String  doRegister(){
		User user = new User();
		user.setUserid(888888); 
		user.setUsername(888888+"");
		user.setUserpswd(888888+"");
		user.setNickname(888888+"");
		user.setContacts(888888+"") ;
		user.setTelephone(888888+"");
		user.setProvinceid(888888);
		user.setEnterprise(888888+"");
		user.setRegtime("2015-02-17 16:49:00");
		user.setRoleid(1);
		user.setSpid(888888+"");
		user.setSpkey(888888+"");
		userService.regist(user);
		return "success";
	}

	
	
	
	
	public UserService getUserService() {
		return userService;
	}
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
}

 

package com.baoy.bean;

public class Provider {

	
	//spid,spkey,user_id,company,address,province_code,insert_time
	
	private  String  spid;  		 //  '厂商ID',
	private  String spkey;      	//'厂商密钥',
	private  int userId ;  		//'用户名',
	private  String company;  		 //'厂商名称',
	private  String address;   		// '厂商地址',
	private  int provinceCode;	 //  '所在省份,外键',
	private  String insertTime;
	
	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append (getClass().getName().substring(getClass().getName().lastIndexOf(".")+1, getClass().getName().length()));
		sb.append(":[");
		sb.append("\"spid\":\"" +spid+"\"," );
		sb.append("\"spkey\":\"" +spkey+"\"," );
		sb.append("\"userId\":\"" +userId+"\"," );
		sb.append("\"company\":\"" +company+"\"" ); 
		sb.append("\"address\":\"" +address+"\"," );
		sb.append("\"provinceCode\":\"" +provinceCode+"\"," );
		sb.append("\"insertTime\":\"" +insertTime+"\"" );
		sb.append("]");
		return  sb.toString() ;
	}
	
	
	public String getSpid() {
		return spid;
	}
	public void setSpid(String spid) {
		this.spid = spid;
	}
	public String getSpkey() {
		return spkey;
	}
	public void setSpkey(String spkey) {
		this.spkey = spkey;
	}
	public int getUserId() {
		return userId;
	}
	public void setUserId(int userId) {
		this.userId = userId;
	}
	public String getCompany() {
		return company;
	}
	public void setCompany(String company) {
		this.company = company;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public int getProvinceCode() {
		return provinceCode;
	}
	public void setProvinceCode(int provinceCode) {
		this.provinceCode = provinceCode;
	}
	public String getInsertTime() {
		return insertTime;
	}
	public void setInsertTime(String insertTime) {
		this.insertTime = insertTime;
	}
	 
}

  

 

package com.baoy.bean;

public class User {
	
	//userid,username,userpswd,nickname,contacts,telephone,enterprise,regtime,provinceid,roleid,spid,spkey
	
	private int userid; 
	private String username;
	private String userpswd;
	private String nickname;
	private String contacts;
	private String telephone;
	private String enterprise;
	private int provinceid;
	private String regtime;
	private int roleid;
	private String spid;
	private String  spkey;
	
	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append (getClass().getName().substring(getClass().getName().lastIndexOf(".")+1, getClass().getName().length()));
		sb.append(":[");
		sb.append("\"userid\":\"" +userid+"\"," );
		sb.append("\"username\":\"" +username+"\"," );
		sb.append("\"userpswd\":\"" +userpswd+"\"," );
		sb.append("\"nickname\":\"" +nickname+"\"" ); 
		sb.append("\"contacts\":\"" +contacts+"\"," );
		sb.append("\"telephone\":\"" +telephone+"\"," );
		sb.append("\"enterprise\":\"" +enterprise+"\"," );
		sb.append("\"provinceid\":\"" +provinceid+"\"" ); 
		sb.append("\"regtime\":\"" +regtime+"\"," );
		sb.append("\"roleid\":\"" +roleid+"\"," );
		sb.append("\"spid\":\"" +spid+"\"," );
		sb.append("\"spkey\":\"" +spkey+"\"" );
		
		sb.append("]");
		return  sb.toString() ;
	}
	
	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUserpswd() {
		return userpswd;
	}
	public void setUserpswd(String userpswd) {
		this.userpswd = userpswd;
	}
	public String getNickname() {
		return nickname;
	}
	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	public String getContacts() {
		return contacts;
	}
	public void setContacts(String contacts) {
		this.contacts = contacts;
	}
	public String getTelephone() {
		return telephone;
	}
	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}
	public String getEnterprise() {
		return enterprise;
	}
	public void setEnterprise(String enterprise) {
		this.enterprise = enterprise;
	}
	public int getProvinceid() {
		return provinceid;
	}
	public void setProvinceid(int provinceid) {
		this.provinceid = provinceid;
	}
	public String getRegtime() {
		return regtime;
	}
	public void setRegtime(String regtime) {
		this.regtime = regtime;
	}
	public int getRoleid() {
		return roleid;
	}
	public void setRoleid(int roleid) {
		this.roleid = roleid;
	}
	public String getSpid() {
		return spid;
	}
	public void setSpid(String spid) {
		this.spid = spid;
	}
	public String getSpkey() {
		return spkey;
	}
	public void setSpkey(String spkey) {
		this.spkey = spkey;
	}
}

 

 

package com.baoy.daoImpl;

import org.springframework.jdbc.core.support.JdbcDaoSupport;

import com.baoy.bean.Provider; 
import com.baoy.dao.ProviderDao; 

public class ProviderDaoImpl extends JdbcDaoSupport implements ProviderDao{

	@Override
	public int saveProvider(Provider provider) {
		String sql = "insert into provider(spid,spkey,user_id,company,address,province_code,insert_time) values (?,?,?,?,?,?,?)";
		return this.getJdbcTemplate().update(sql,new Object[] {provider.getSpid(),provider.getSpkey(),provider.getUserId(),provider.getCompany(),provider.getAddress(),provider.getProvinceCode(),provider.getInsertTime()});
	}

}

 

package com.baoy.daoImpl;


import org.springframework.jdbc.core.support.JdbcDaoSupport;
import com.baoy.bean.User;
import com.baoy.dao.UserDao; 

public class UserDaoImpl  extends JdbcDaoSupport implements UserDao{

	@Override
	public int saveUser(User user) {
		String sql = "insert into user(userid,username,userpswd,nickname,contacts,telephone,enterprise,regtime,provinceid,roleid,spid,spkey) values (?,?,?,?,?,?,?,?,?,?,?,?)";
		return this.getJdbcTemplate().update(sql, new Object[]
				{user.getUserid(), 
				user.getUsername(), 
				user.getUserpswd(), 
				user.getNickname(),
				user.getContacts() ,
				user.getTelephone(), 
				user.getEnterprise(), 
				user.getRegtime(), 
				user.getProvinceid(),
				user.getRoleid(),
				user.getSpid(),
				user.getSpkey()});
	}
	
}

  

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

分享到:
评论

相关推荐

    多数据源 更新 spring jta java jotm

    本文将深入探讨如何使用Spring、Java Transaction API (JTA) 和 Java Object Transaction Manager (JOTM) 实现多数据源更新的解决方案。 首先,让我们理解什么是多数据源。在传统的单数据源环境中,应用程序通常...

    spring JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)

    JTA是Java EE平台的一部分,提供了一种标准接口来管理和协调跨多个数据源的事务。它允许应用程序进行全局事务处理,即使这些操作涉及到不同的数据库或者其他资源管理器。 在Spring中,我们可以利用`...

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

    JTA是Java平台的标准事务API,它允许应用程序进行跨多个数据源(如数据库或消息队列)的全局事务处理。通过JTA,开发者可以编写不关心具体事务管理细节的代码,这样就提高了代码的可移植性和可维护性。 JOTM则是JTA...

    spring+jotm 多数据源事务管理(二)hibernate

    本篇文章将聚焦于如何结合Spring和JOTM(Java Open Transaction Manager)来实现多数据源的事务管理,特别是针对使用Hibernate的情况。 JOTM是Java平台上的一个开放源代码事务管理器,它遵循JTA(Java Transaction ...

    Spring+Jotm+Hibernate+Oracle+Junit 实现JTA分布式事务要求Demo工程

    1.多数据源配置,采用方式:直接配置两个不同的数据源,不同的sessionFactory。 2.Spring+Jotm整合实现JTA分布式事务,应用场景如转账等,同一事务内完成db1用户加100元、db2用户减100元。 3.Spring+Junit4单元...

    Spring+iBatis+JOTM实现JTA事务

    在分布式系统中,JTA(Java Transaction API)事务管理用于处理跨越多个数据源的事务,如数据库、消息队列等。JOTM(Java Open Transaction Manager)是一个开源的JTA事务管理器,可以在非J2EE环境下提供分布式事务...

    spring 3.0.5 + jotm 实现的的spring mvc 的例子

    在Spring中,通过集成JOTM,可以实现全局的事务控制,确保在多资源操作中保持数据的一致性。 **集成步骤**: 1. **添加依赖**:首先,项目需要在构建配置(如pom.xml或build.gradle)中引入Spring 3.0.5和JOTM的...

    spring+jotm 多数据源事务管理(三)JNDI+Tomcat

    在本篇文章中,我们将深入探讨如何利用Spring框架结合JOTM(Java Open Transaction Manager)来实现多数据源下的分布式事务管理。我们将通过具体实例展示如何在Tomcat服务器环境下配置并使用这些技术。 #### 一、...

    spring-hibernate-jotm 例子

    JOTM是Java事务API(JTA)的一个开源实现,用于管理跨多个资源(如数据库和消息队列)的分布式事务。在Spring中,JOTM可以作为全局事务管理器,处理跨越不同数据源的事务。当应用程序需要在多个数据库或者服务之间...

    在Spring中使用JTA事务管理

    在Spring框架中,JTA(Java Transaction API)事务管理是一种用于处理分布式事务的高级机制,它允许应用程序在多个数据源之间进行协调的事务操作。本文将详细介绍如何在Spring中使用JTA事务管理,包括通过集成JOTM...

    使用JOTM实现分布式事务管理(多数据源)

    JOTM作为JTA的一个实现,允许开发者在分布式环境中处理多数据源的事务,确保数据的一致性和完整性。 分布式事务的主要挑战在于保持ACID(原子性、一致性、隔离性和持久性)属性,即使在系统故障或网络中断的情况下...

    JTA事务源码示例

    Spring+iBatis+JOTM实现JTA事务: 如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,...

    Spring多数据源配置_分布式数据

    ### Spring多数据源配置与分布式数据管理 #### 环境及框架介绍 在本案例中,我们将探讨如何在基于Tomcat服务器的环境下配置多个数据源,并实现分布式数据的交互。该系统的架构主要包括:Tomcat作为应用服务器,...

    jta分布式事务完成例子,测试通过

    例子虽小,可覆盖面广,设计spring载入.properties文件,spring配置jta和jotm分布式事务,设置数据源连接池,注解事务驱动。功能是在mysql上建立了两个数据库分别为dbone和dbtwo,在dbone里有表tb1,表中只有一个字段...

    JOTM简单测试DEMO(不含jar包)

    本DEMO主要展示了如何在Spring框架中结合JOTM来处理分布式事务,特别是涉及多个数据源的情况。 首先,我们需要理解JOTM的基本概念。JOTM作为一个事务协调者,负责管理跨多个资源的事务,确保它们要么全部成功,要么...

    分布式事务JTA之实践:Spring+ATOMIKOS

    1. Spring配置文件(如`applicationContext.xml`):配置Atomikos事务管理器和数据源。 2. 业务服务类:使用`@Transactional`注解的方法,展示事务的边界。 3. 数据库配置和实体类:与事务相关的数据库连接和数据...

    jotm jar包

    JTA是Java平台标准的一部分,定义了API来管理和协调跨多个数据源的事务。它提供了一种统一的方式来处理应用程序中的事务,无论这些数据源是数据库、消息队列还是其他服务。JTS则是JTA的一个扩展,主要用于J2EE环境中...

Global site tag (gtag.js) - Google Analytics