初次尝试:

配置Mysql时候使用的是Atomikos+DruidXADataSource,所以觉得配置SQLServer应该也是仅仅配置配置就够了,于是引入JDBC驱动依赖后,配置了文件

 spring.datasource.system.xa-properties.dataSourceURL=jdbc:sqlserver://XXX;DatabaseName=XXX
spring.datasource.system.xa-properties.username=sa
spring.datasource.system.xa-properties.password=XXX
spring.datasource.system.xa-data-source-class-name=com.alibaba.druid.pool.xa.DruidXADataSource
spring.datasource.system.unique-resource-name=systemDataSource

但是通过修改配置文件配置SQLServer发现:当我配置url=jdbc:sqlserver://XXX;DatabaseName=XXX时启动Spring Boot会报

 xa not support dbType :sqlserver

查了下资料,说是Druid会通过url前缀选择JDBC驱动,再追踪错误查看了报错的地方,在源码com.alibaba.druid.pool.xa.DruidXADataSource下

  private XAConnection createPhysicalXAConnection(Connection physicalConn) throws SQLException {
if (JdbcUtils.ORACLE.equals(dbType)) {
try {
return OracleUtils.OracleXAConnection(physicalConn);
} catch (XAException xae) {
LOG.error("create xaConnection error", xae);
return null;
}
} if (JdbcUtils.MYSQL.equals(dbType) || JdbcUtils.MARIADB.equals(dbType)) {
return MySqlUtils.createXAConnection(driver, physicalConn);
} if (JdbcUtils.POSTGRESQL.equals(dbType)) {
return PGUtils.createXAConnection(physicalConn);
} if (JdbcUtils.H2.equals(dbType)) {
return H2Utils.createXAConnection(h2Factory, physicalConn);
} if (JdbcUtils.JTDS.equals(dbType)) {
return new JtdsXAConnection(physicalConn);
} throw new SQLException("xa not support dbType : " + this.dbType);
}

看了下源码,发现里面有部分是从/META-INF/druid-driver.properties下读取的,但是都没有以前缀jdbc:sqlserver的属性,这说明DruidXADataSorce并不支持SQLServer 2008

解决思路:

1.发现里面有个配置jdbc:microsoft:=com.microsoft.jdbc.sqlserver.SQLServerDriver,那么就代表我可以配置成jdbc:microsoft:的url,但是发现这个对应的JDBC驱动是以前sqljdbc,而现在基本都是sqljdbc4,找不到这驱动,同时这驱动不能用于2008版本,所以放弃了这个做法

2.不使用DruidXADataSource,改为SQLServerXADataSource;最终选择的就是这种

具体操作:

1.暂时不用properties配置参数,直接在java配置文件中声明Bean

    @Bean(name="systemDataSource")
@Primary
//@ConfigurationProperties(prefix = "spring.datasource.system")
public DataSource dataSource() {
AtomikosDataSourceBean dataSourceBean = new AtomikosDataSourceBean(); SQLServerXADataSource datasource = new SQLServerXADataSource();
datasource.setURL("jdbc:sqlserver://XXX;DatabaseName=XXX");
datasource.setUser("sa");
datasource.setPassword("XXX"); dataSourceBean.setXaDataSource(datasource);
dataSourceBean.setUniqueResourceName("systemDataSource");
dataSourceBean.setPoolSize(20);
return dataSourceBean;
}

2.还需要去数据库服务器处理一下

参考:https://www.ibm.com/support/knowledgecenter/zh/SSFTN5_8.5.6/com.ibm.wbpm.imuc.sbpm.doc/topics/db_xa_nd_win_man.html

 补充说明:

声明Bean用到的属性使用安全属性注入的话,可以使用如下配置

 spring.datasource.system.xa-properties.URL=jdbc:sqlserver://XXX;DatabaseName=XXX
spring.datasource.system.xa-properties.user=sa
spring.datasource.system.xa-properties.password=XXX
spring.datasource.system.pool-size=
spring.datasource.system.xa-data-source-class-name=com.microsoft.sqlserver.jdbc.SQLServerXADataSource
spring.datasource.system.unique-resource-name=systemDataSource

2019-04-29 EasyWeb下配置Atomikos+SQLServer分布式数据源的更多相关文章

  1. ubuntu16.04 ROS环境下配置和运行SVO

    ubuntu16.04 ROS环境下配置和运行SVO https://blog.csdn.net/nnUyi/article/details/78005552

  2. 【CAS单点登录视频教程】 第04集 -- tomcat下配置https环境

    目录 ----------------------------------------- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthenticati ...

  3. 虚拟机中ubuntu-16.04 Linux系统下配置mysql数据库,并在windows下使用navicat远程连接

    Linux系统下mysql数据库安装配置步骤: 1.在服务器上安装mysql:sudo apt-get install mysql-server sudo apt-get install mysql- ...

  4. Ubuntu18.04 vmware环境下配置静态ip

    各种linux系统发行版本配置静态ip方法各不相同,dhcp获取的话ip可能会变动,如果用xshell等工具连接的时候还要改ip,很是麻烦: 参考了网上各种配置Ubuntu18.04配置静态ip的方法 ...

  5. Linux下配置Hadoop伪分布式环境

    1. 准备Linux环境 提示:我用的系统是CentOS 6.4. 1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host- ...

  6. Linux下配置Hadoop全分布式环境

    1. 前提 部署全分布式环境,我们肯定不能在一台服务器上了,这里我用了7台服务器,在VMware上开了7个虚拟机,如下图所示: 我基本配置了一晚上才搞定,第一次配置一般都有错,这时候不妨去到hadoo ...

  7. 总结spring下配置dbcp,c3p0,proxool数据源链接池

    转载自 http://hiok.blog.sohu.com/66253191.html applicationContext-datasource-jdbc.xml <?xml version= ...

  8. Ubuntu 12.04环境下配置Postgresql和phppgadmin

    Ubuntu 12.04环境下配置Postgresql 9.1 和phppgadmin 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/zjianb ...

  9. Ubuntu 18.04 下配置 HAXM 加速 Android模拟器

    Ubuntu 18.04 下配置 HAXM 加速 Android模拟器 最近在vmware环境下搭建ubuntu18.04开发环境,开始发现总是运行android模拟器在console提示加载如下错误 ...

随机推荐

  1. PostgreSQL相关整理

    PostgreSQL权限管理之创建可更新表的普通用户 https://my.oschina.net/aven92/blog/528943 PostgreSQL学习手册(角色和权限) http://ww ...

  2. MySQL 笔记整理(19) --为什么我只查一行的语句,也执行这么慢?

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 19) --为什么我只查一行的语句,也执行这么慢? 需要说明一下,如果M ...

  3. Django之路由分发和反向解析

    一.路由分发: 路由分发是指:总路由不再直接做路由与视图函数的对应关系,而是将获取的路由分发给下面的app去处理对应关系 from django.conf.urls import url,includ ...

  4. 硬杠后端(后端坑系列)——Django前期工作

    Django是一个开放源代码的Web应用框架,由Python写成,采用了MVC的框架模式. MVC MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件 ...

  5. KsUML 免费的类图建模工具

    最近基于SharpDevelop和NClass两个开源软件,开发了一个免费的类图建模工具,详情请访问 www.TimeGIS.com KsUML类图建模工具是一个用来给软件开发人员使用的一种UML类图 ...

  6. java 设计模式 ---- 单例模式

    只产生一个实例, 所以要使用静态方法对外暴露对象(如果使用反射技术, 也能调用私有的构造方法) 懒汉模式 并发时还是可能会产生多个实例, 所以同步处理 public class User{ priva ...

  7. 大华门禁SDK二次开发(一)-技术沟通

    项目中需要能够查询门禁信号和控制门禁设备,因此需要基于大华门禁SDK进行二次开发,开发语言C#.门禁开发中遇到了一些问题,经过与大华技术的邮件沟通也一一解决.做这个开发的时候,发现网上的资料比较少,想 ...

  8. 从零开始搭建服务器部署web项目

    前言 该教程旨在完整描述建站过程,会将博主踩过的坑尽量详细的罗列出来.整个建站流程相对较为庞大,因此做了分解,同时适合大家有针对性的查询感兴趣的部分. 一.如何拥有自己的云服务器. 二.域名的购买与解 ...

  9. iOS:我的学习路径

    1.复习C语言(半个月) <C Primer Plus>1-6章 2.学习Objective-C基础语法(一周) 黑马程序员视频 3.直接用Xcode开始APP的实战(半个月) 黑马程序员 ...

  10. C#断点调试时属性get块逻辑执行多次

    上面的例中,当打断点调试时,断点断住时, Attr1属性的get块就会执行一次. 两个断点加在逻辑中对Attr1的访问,最后发现CTest get Attr1.打印了3次. 得到的结论是:多余的2次打 ...