2019-04-29 EasyWeb下配置Atomikos+SQLServer分布式数据源

初次尝试:

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

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

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

1 xa not support dbType :sqlserver

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

 1  private XAConnection createPhysicalXAConnection(Connection physicalConn) throws SQLException {
 2         if (JdbcUtils.ORACLE.equals(dbType)) {
 3             try {
 4                 return OracleUtils.OracleXAConnection(physicalConn);
 5             } catch (XAException xae) {
 6                 LOG.error("create xaConnection error", xae);
 7                 return null;
 8             }
 9         }
10
11         if (JdbcUtils.MYSQL.equals(dbType) || JdbcUtils.MARIADB.equals(dbType)) {
12             return MySqlUtils.createXAConnection(driver, physicalConn);
13         }
14
15         if (JdbcUtils.POSTGRESQL.equals(dbType)) {
16             return PGUtils.createXAConnection(physicalConn);
17         }
18
19         if (JdbcUtils.H2.equals(dbType)) {
20             return H2Utils.createXAConnection(h2Factory, physicalConn);
21         }
22
23         if (JdbcUtils.JTDS.equals(dbType)) {
24             return new JtdsXAConnection(physicalConn);
25         }
26
27         throw new SQLException("xa not support dbType : " + this.dbType);
28     }

看了下源码,发现里面有部分是从/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

 1    @Bean(name="systemDataSource")
 2     @Primary
 3     //@ConfigurationProperties(prefix = "spring.datasource.system")
 4     public DataSource dataSource() {
 5         AtomikosDataSourceBean dataSourceBean = new AtomikosDataSourceBean();
 6
 7         SQLServerXADataSource datasource = new SQLServerXADataSource();
 8         datasource.setURL("jdbc:sqlserver://XXX;DatabaseName=XXX");
 9         datasource.setUser("sa");
10         datasource.setPassword("XXX");
11
12         dataSourceBean.setXaDataSource(datasource);
13         dataSourceBean.setUniqueResourceName("systemDataSource");
14         dataSourceBean.setPoolSize(20);
15         return dataSourceBean;
16     }

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

原文地址:https://www.cnblogs.com/WongHugh/p/10792166.html

时间: 2024-10-10 04:55:15

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

Ubuntu14.04服务器环境下配置方法如下:

这篇文章主要介绍了Ubuntu14.04服务器环境下配置PHP7.0+Apache2+Mysql5.7的方法,较为详细的分析了Ubuntu14.04操作系统环境下配置PHP7.0+Apache2+Mysql5.7的具体步骤与相关命令使用技巧,需要的朋友可以参考下 本文实例讲述了Ubuntu14.04服务器环境下配置PHP7.0+Apache2+Mysql5.7的方法.分享给大家供大家参考,具体如下: 这里为Ubuntu14.04系统下配置PHP7.0+Apache2+Mysql5.7,主要目的是

Ubuntu 12.04 Server中文下配置UTF-8中文/英文环境

#安装中文语言包 apt-get install language-pack-zh-hans locale-gen cd /etc/default cp locale locale.bak #中文 cat <<EOF >locale LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:en" LC_CTYPE="zh_CN.UTF-8" EOF #重启Ubuntu Server reboot #----- #英

Ubuntu12.04在无网络环境下配置apt-get光盘源的简单方法

许多数据库服务器是不能连上internet,想更新安装包就比较麻烦. 通常可以先在有internet环境的计算机上下载deb包,在拷贝到服务器安装deb,这样很难处理包的依赖关系. apt-get可以解决包的依赖关系,但是默认配置下需要从internet下载包,如果可以从本地读取安装源就可以解决包的依赖关系和无internet的问题. 步骤参考: 1.把光盘插入光驱,并且挂载到本地: mount /dev/cdrom  /mnt 2.备份后修改source.list仓库配置文件: mv /etc

Ubuntu14.04下配置Java环境

Java环境配置网上已经有很多资料了,不过大多不适合初学者,Linux菜鸟更是不知所措了...Ubuntu14.04下配置Java环境,具体方案如下: Oracle官网上下载"jdk-8-linux-i586.tar.gz"和"jre-8-linux-i586.tar.gz",放置于~/java目录下(主目录下新建个文件夹"java").或者从下述链接下载: http://yun.baidu.com/share/link?shareid=2693

Ubuntu12.04下配置Eclipse+PyDev

开发平台:Ubuntu12.04 IDE:Eclipse3.7.2 python版本:python3.4.4 搭建Eclipse+PyDev的开发环境,在网上找了一些教程,有一些错误,尝试了许久,也走了不少弯路.特此整理,需要用到的朋友,可以参考一下. 安装步骤: 1.安装python3.4.4 sudo apt-get install python3.4 ubuntu12.04默认安装和使用的是python2.7,我要用到的是python3,因此重新安装了python3.4.这里需要注意的是,

Ubuntu 16.04下配置nginx与nodejs以及服务的部署

title: Ubuntu 16.04下配置nginx与nodejs以及服务的部署 date: 2019-05-05 22:45:49 tags: Linux --- 第一步:安装nginx sudo apt-get update sudo apt-get install nginx 如果遇到依赖问题,尝试执行sudo apt-get -f install命令 第二步:配置nginx 首先备份原先的配置文件:sudo cp /etc/nginx/sites-available/default /

ubuntu18.04下配置jdk1.8

ubuntu下配置jdk第一步与win10下相同  首先来到官网下载jdk:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在这里下载了 压缩包的版本. 1.下载完成后,解压文件 使用命令: tar -zxvf jdk-8u191-linux-x64.tar.gz 2.解压完成后 将文件移动到 /usr/lib mv jdk1.8.0_191 /usr/lib/jdk1.8

Ubuntu下配置安装Hadoop 2.2

---恢复内容开始--- 这两天玩Hadoop,之前在我的Mac上配置了好长时间都没成功的Hadoop环境,今天想在win7 虚拟机下的Ubuntu12.04 64位机下配置, 然后再建一个组群看一看. 参考资料: 1. Installing single node Hadoop 2.2.0 on Ubuntu: http://bigdatahandler.com/hadoop-hdfs/installing-single-node-hadoop-2-2-0-on-ubuntu/ 配置过程如下:

&lt;2014 04 29&gt; c/c++常用库总结

C 标准库 ============================================================================================== C++ 标准库 STL 标准库中提供了C++程序的基本设施.虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正式定型,但是在标准库的实现上却很令人欣慰得看到多种实现,并且已被实践证明为有工业级别强度的佳作. 1. Dinkumware C++ Library 参考站点:http://w