多数据源 更新 spring jta java jotm

简介:  多数据源 更新 spring jta java  jotm   代码下载 :http://download.csdn.net/download/knight_black_bob/8816323   对比 下面的 多数据库操作   http://knight-black-bob.

 多数据源 更新 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捐助),没钱捧个人场,谢谢各位。



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

 

 

目录
相关文章
|
19天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
19天前
|
缓存 Java 数据库
【Java面试题汇总】Spring篇(2023版)
IoC、DI、aop、事务、为什么不建议@Transactional、事务传播级别、@Autowired和@Resource注解的区别、BeanFactory和FactoryBean的区别、Bean的作用域,以及默认的作用域、Bean的生命周期、循环依赖、三级缓存、
【Java面试题汇总】Spring篇(2023版)
|
10天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
528 8
|
20天前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
20天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
2月前
|
IDE Java 开发工具
快速上手指南:如何用Spring Boot开启你的Java开发之旅?
【8月更文挑战第22天】Spring Boot由Pivotal团队开发,简化了Spring应用的创建过程。本文详述了从零开始搭建Spring Boot项目的步骤:首先确保安装了新版JDK、Maven/Gradle及IDE如IntelliJ IDEA或Eclipse;接着访问Spring Initializr网站(start.spring.io),选择所需依赖(如Web模块)并生成项目;最后,使用IDE打开生成的项目,添加`@SpringBootApplication`注解及main方法来启动应用。通过这些步骤,即便是新手也能快速上手,专注于业务逻辑的实现。
34 1
|
2月前
|
Java API 数据库
详细介绍如何使用Spring Boot简化Java Web开发过程。
Spring Boot简化Java Web开发,以轻量级、易用及高度可定制著称。通过预设模板和默认配置,开发者可迅速搭建Spring应用。本文通过创建RESTful API示例介绍其快速开发流程:从环境准备、代码编写到项目运行及集成数据库等技术,展现Spring Boot如何使Java Web开发变得更高效、简洁。
46 1
|
2月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
31 0
|
2月前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
33 0
|
2月前
|
安全 Java 开发者
Java反射:Spring Boot背后的魔法,让你的代码质量飞跃的神秘力量!
【8月更文挑战第29天】Java反射机制允许程序在运行时访问和修改类、接口、方法等属性,而Spring Boot则广泛应用反射实现依赖注入和自动配置。本文探讨如何利用反射机制提升Spring Boot应用的代码质量,包括动态类型处理、元数据访问及依赖注入等方面。通过实战示例展示动态调用方法和自定义注解处理,强调反射机制对代码灵活性与扩展性的贡献,同时提醒开发者注意性能和安全问题。
47 0
下一篇
无影云桌面