目录
(4)seata-core-1.4.0.jar\io\seata\core\constants --》 DBType.class 增加kingbase8支持
(1)seata-core-1.4.0.jar\META-INF\services --》按文档中的oracle格式,增加kingbase支持
(4)io.seata.core.constants -》 DBType.class 增加kingbase8支持
(7)io.seata.rm.datasource.undo-->增加kingbase包以及内部的class,模仿oracle
(9)io.seata.sqlparser.druid-->增加kingbase包以及内部的class,模仿oracle
目前seata1.4.0只支持 MySQL、 Oracle 、PostgreSQL和 TiDB的AT模式,无法满足国产数据库的要求。找了很多的资料,都没有现成可使用的版本,只能模仿oracle的支持进行修改,修改包含服务端和客户端。以下是修改的步骤,如有错误,敬请指正。
springcloud集成seata请参考:https://blog.csdn.net/u014704612/article/details/110194156
一、服务端的修改
seata-core-1.4.0.jar
(1)seata-core-1.4.0.jar\META-INF\services --> io.seata.core.store.db.sql.lock.LockStoreSql、io.seata.core.store.db.sql.log.LogStoreSqls 加上kingbase8的引入
(2)seata-core-1.4.0.jar\io\seata\core\store\db\sql\lock -- 》增加KingbaseLockStoreSql.class,模仿OracleLockStoreSql.class
(3)seata-core-1.4.0.jar\io\seata\core\store\db\sql\log-- 》增加KingbaseLogStoreSqls.class,模仿OracleLogStoreSqls.class
(4)seata-core-1.4.0.jar\io\seata\core\constants --》 DBType.class 增加kingbase8支持
二、客户端的修改
seata-all.1.4.0.jar
(1)seata-core-1.4.0.jar\META-INF\services --》按文档中的oracle格式,增加kingbase支持
(2)seata-core-1.4.0.jar\io\seata\core\store\db\sql\lock -- 》增加KingbaseLockStoreSql.class,模仿OracleLockStoreSql.class
(3)seata-core-1.4.0.jar\io\seata\core\store\db\sql\log-- 》增加KingbaseLogStoreSqls.class,模仿OracleLogStoreSqls.class
(4)io.seata.core.constants -》 DBType.class 增加kingbase8支持
(5)io.seata.rm.datasource.exec.kingbase--》增加KingbaseInsertExecutor.class,模仿OracleInsertExecutor.class
(6)io.seata.rm.datasource.sql.struct.cache--》 增加KingbaseTableMetaCache,模仿MysqlTableMetaCache.class,并修改增加截图中的内容
(7)io.seata.rm.datasource.undo-->增加kingbase包以及内部的class,模仿oracle
(8)io.seata.rm.datasource.undo-->修改AbstractUndoExecutor.class,不清楚为啥kingbase 的JdbcUtils.getDbType(jdbcUrl)获取报空指针异常
(9)io.seata.sqlparser.druid-->增加kingbase包以及内部的class,模仿oracle
三、上传修改后的jar到nexus
修改后的jar,版本设置为1.4.0.0
上传jar
mvn deploy:deploy-file -DgroupId=io.seata -DartifactId=seata-all -Dversion=1.4.0.0 -Dpackaging=jar -Dfile=F:\1.4.0.0\seata-all-1.4.0.0.jar -Durl=http://ip:port/repository/sfs_repositories/ -DrepositoryId=sfs
上传pom,使用seata-all.1.4.0原来的pom,覆盖1.4.0.0新生成的
mvn deploy:deploy-file -Dfile=F:\1.4.0.0\seata-all-1.4.0.0.pom -DgroupId=io.seata -DartifactId=seata-all -Dversion=1.4.0.0 -Dpackaging=pom -Durl=http://ip:port/repository/sfs_repositories/ -DrepositoryId=sfs