完整工程下载路径 http://download.csdn.net/detail/npf_java/8786825
拿一个MySQL + oracle 数据源配置为例吧
database.properties
- #mysql DB
- mysql.qa.db.url=jdbc:mysql://localhost:3306/ssm_qa?useUnicode=true&characterEncoding=UTF-8
- mysql.qa.db.user=root
- mysql.qa.db.password=ROOT
- mysql.dev.db.url=jdbc:mysql://localhost:3306/ssm_dev?useUnicode=true&characterEncoding=UTF-8
- mysql.dev.db.user=root
- mysql.dev.db.password=ROOT
- #oracle DB
- oracle.qa.db.url=jdbc\:oracle\:thin\:@1.1.1.32\:1521\:nyj
- oracle.qa.db.driverClassName=oracle.jdbc.OracleDriver
- oracle.qa.db.testQuery=select 1 from dual
- oracle.qa.db.user=oms
- oracle.qa.db.password=oms
- oracle.dev.db.url=jdbc\:oracle\:thin\:@1.1.1.32\:1521\:nyj
- oracle.dev.db.driverClassName=oracle.jdbc.OracleDriver
- oracle.dev.db.testQuery=select 1 from dual
- oracle.dev.db.user=com
- oracle.dev.db.password=lsd
- #sqlserver DB
- sqlserver.qa.db.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
- sqlserver.qa.db.url=jdbc:sqlserver://1.1.1.11:1433;DatabaseName=dl_xbny
- sqlserver.qa.db.user=dl_xbny
- sqlserver.qa.db.password=dl123456
- sqlserver.dev.db.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
- sqlserver.dev.db.url=jdbc:sqlserver://1.1.1.11:1433;DatabaseName=com_xbny
- sqlserver.dev.db.user=com_xbny
- sqlserver.dev.db.password=com123456
mysql-oracle-beans.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:rabbit="http://www.springframework.org/schema/rabbit"
- xmlns:cache="http://www.springframework.org/schema/cache" xmlns:task="http://www.springframework.org/schema/task"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd
- http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
- <context:component-scan base-package="com.xy">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
- <context:property-placeholder location="classpath:context/database.properties"/>
- <tx:annotation-driven/>
- <bean id="abstractXADataSource" class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean" init-method="init"
- destroy-method="close" abstract="true">
- <property name="xaDataSourceClassName" value="com.mysql.jdbc.Driver"/>
- <property name="poolSize" value="10" />
- <property name="minPoolSize" value="10"/>
- <property name="maxPoolSize" value="30"/>
- <property name="borrowConnectionTimeout" value="60"/>
- <property name="reapTimeout" value="20"/>
- <!-- 最大空闲时间 -->
- <property name="maxIdleTime" value="60"/>
- <property name="maintenanceInterval" value="60"/>
- <property name="loginTimeout" value="60"/>
- <property name="testQuery">
- <value>select 1</value>
- </property>
- </bean>
- <bean id="qadataSource" class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
- <!-- value只要两个数据源不同就行,随便取名 -->
- <property name="uniqueResourceName" value="dlDB" />
- <property name="driverClassName">
- <value>com.mysql.jdbc.Driver</value>
- </property>
- <property name="url">
- <value>${mysql.qa.db.url}</value>
- </property>
- <property name="user">
- <value>${mysql.qa.db.user}</value>
- </property>
- <property name="password">
- <value>${mysql.qa.db.password}</value>
- </property>
- </bean>
- <bean id="devdataSource" class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
- <!-- value只要两个数据源不同就行,随便取名 -->
- <property name="uniqueResourceName" value="nyxsDB" />
- <property name="driverClassName">
- <value>${oracle.dev.db.driverClassName}</value>
- </property>
- <property name="url">
- <value>${oracle.dev.db.url}</value>
- </property>
- <property name="user">
- <value>${oracle.dev.db.user}</value>
- </property>
- <property name="password">
- <value>${oracle.dev.db.password}</value>
- </property>
- </bean>
- <bean id="qasqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="qadataSource" />
- <property name="mapperLocations" value="classpath*:com/xy/dao/*.xml" />
- </bean>
- <bean id="devsqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="devdataSource" />
- <property name="mapperLocations" value="classpath*:com/xy/daodev/*.xml" />
- </bean>
- <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
- init-method="init" destroy-method="close">
- <property name="forceShutdown">
- <value>true</value>
- </property>
- </bean>
- <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
- <property name="transactionTimeout" value="300" />
- </bean>
- <bean id="transactionManager"
- class="org.springframework.transaction.jta.JtaTransactionManager">
- <property name="transactionManager">
- <ref bean="atomikosTransactionManager"/>
- </property>
- <property name="userTransaction">
- <ref bean="atomikosUserTransaction"/>
- </property>
- <!-- 必须设置,否则程序出现异常 JtaTransactionManager does not support custom isolation levels by default -->
- <property name="allowCustomIsolationLevels" value="true"/>
- </bean>
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.xy.dao"/>
- <property name="sqlSessionFactoryBeanName" value="qasqlSessionFactory" />
- </bean>
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.xy.daodev"/>
- <property name="sqlSessionFactoryBeanName" value="devsqlSessionFactory" />
- </bean>
- </beans>
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <listener>
- <listener-class>
- org.springframework.web.context.request.RequestContextListener
- </listener-class>
- </listener>
- <!--
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:context/mysql-beans.xml</param-value>
- </context-param>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:context/oracle-beans.xml</param-value>
- </context-param>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:context/sqlserver-beans.xml</param-value>
- </context-param>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:context/sqlserver-oracle-beans.xml</param-value>
- </context-param>
- -->
- <span style="color:#ff6666;"> <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:context/mysql-oracle-beans.xml</param-value>
- </context-param></span>
- <servlet>
- <servlet-name>test</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:context/test-web.xml</param-value>
- </init-param>
- <load-on-startup>100</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>test</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index</welcome-file>
- </welcome-file-list>
- </web-app>
基本上看这个三个配置文件就可以了,不明白的话,可以下载完整工程,dbsql有完整的建表语句
相关推荐
本教程将探讨如何利用Spring Boot、Druid、Mybatis以及Atomikos来配置多数据源并实现分布式事务。 首先,Spring Boot是Java生态系统中的一个流行框架,它简化了设置和配置过程,使得开发人员可以快速启动新项目。在...
本篇文档主要讲述如何使用Spring Boot结合MyBatis、JTA(Java Transaction API)以及Atomikos实现多数据源的事务管理。 ### Spring Boot框架 Spring Boot是Spring家族中的一个全新框架,用于简化新Spring应用的...
Atomikos分布式事务DEMO是一个基于Spring、MyBatis、MySQL和Tomcat的示例项目,主要用于演示和验证分布式事务的处理能力。分布式事务在现代企业级应用中扮演着重要角色,尤其是在处理跨多个数据库或服务的数据一致性...
Spring 中使用 Atomikos+Druid 实现经典分布式事务的方法 在分布式系统中,经典分布式事务是相对互联网中的柔性分布式事务而言,其特性为 ACID 原则,包括原子性(Atomictiy)、一致性(Consistency)、隔离性...
综上所述,这个项目是一个利用 Maven 构建的 Spring Boot 应用,它整合了多数据源、JTA 来处理分布式事务,使用 MyBatis 作为持久层框架,并且集成了某种模板引擎来生成动态页面。这样的设计使得项目具备处理大规模...
总之,这个压缩包提供的示例项目涵盖了Spring Boot、MyBatis、MySQL和JTA的集成,对于理解如何在分布式环境中处理多数据源事务是一个宝贵的参考。学习和理解这些知识点对于开发复杂的企业级应用至关重要。
5. 分布式事务:Seata或Atomikos等工具处理分布式环境下的事务一致性问题。 6. 日志管理:ELK(Elasticsearch、Logstash、Kibana)堆栈或Fluentd等日志收集和分析,便于故障排查。 7. Docker容器化:使用Docker和...
此外,对于分布式事务的处理,Spring 4.3提供了更好的支持,如XAP(eXtreme Application Platform)和Atomikos等事务管理器的集成。 标签中的"jar"表示这是一个Java Archive文件,通常用于打包Java类库。"springmvc...
可能涉及到Seata或Atomikos这样的分布式事务管理框架,确保在多服务间的事务一致性。 9. **支付集成**:笔记可能涵盖第三方支付平台如支付宝或微信支付的集成,包括回调处理和异常情况的处理。 10. **微服务架构**...
SpringBoot支持分布式事务管理,如Atomikos、Bitronix等,确保数据一致性。 7. **前端界面**:可能使用Thymeleaf、Freemarker等模板引擎配合HTML、CSS和JavaScript来构建用户友好的交互界面,实现动态数据展示和...
1. SpringBoot基础:SpringBoot是Spring框架的简化版,它内置了Tomcat服务器、自动配置、starter依赖等,极大地简化了项目构建过程。源码中可以看到如何通过@SpringBootApplication注解启动Spring Boot应用,并利用@...
比如,如果你想在项目中使用MyBatis,只需添加mybatis-spring-boot-starter依赖,Starter就会自动配置好MyBatis的基本设置,包括数据源、事务管理器等,开发者无需手动编写大量配置代码。 SpringBoot JPA则是对Java...