• nacos2.1集成达梦数据库


    nacos2.1集成达梦数据库

    1、下载源码

    https://github.com/alibaba/nacos

    2、新增达梦驱动依赖

    父pom.xml

    		8.1
    
            
                com.dm.driver
                jdbc18
                ${dm-driver.version}
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    nacos-config模块pom.xml

            
                com.dm.driver
                jdbc18
            
    
    • 1
    • 2
    • 3
    • 4

    3、修改nacos-console模块配置文件application.properties

    #*************** Config Module Related Configurations ***************#
    ### If use MySQL as datasource:
    spring.datasource.platform=dm
    ### Count of DB:
    db.num=1
    
    ### Connect URL of DB:
    db.jdbcDriverName=dm.jdbc.driver.DmDriver
    db.url.0=jdbc:dm://127.0.0.1:5236/MAIN?STU&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
    db.user.0=NACOS
    db.password.0=NACOS!@#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4、 nacos-config模块修改java类

    修改ExternalDataSourceProperties.java

        private String jdbcDriverName;
    
        public String getJdbcDriverName() {
            return jdbcDriverName;
        }
    
        public void setJdbcDriverName(String jdbcDriverName) {
            this.jdbcDriverName = jdbcDriverName;
        }
    
    	List<HikariDataSource> build(Environment environment, Callback<HikariDataSource> callback) {
            List<HikariDataSource> dataSources = new ArrayList<>();
            Binder.get(environment).bind("db", Bindable.ofInstance(this));
            Preconditions.checkArgument(Objects.nonNull(num), "db.num is null");
            Preconditions.checkArgument(CollectionUtils.isNotEmpty(user), "db.user or db.user.[index] is null");
            Preconditions.checkArgument(CollectionUtils.isNotEmpty(password), "db.password or db.password.[index] is null");
            for (int index = 0; index < num; index++) {
                int currentSize = index + 1;
                Preconditions.checkArgument(url.size() >= currentSize, "db.url.%s is null", index);
                DataSourcePoolProperties poolProperties = DataSourcePoolProperties.build(environment);
                poolProperties.setDriverClassName(JDBC_DRIVER_NAME);
                poolProperties.setJdbcUrl(url.get(index).trim());
                poolProperties.setUsername(getOrDefault(user, index, user.get(0)).trim());
                poolProperties.setPassword(getOrDefault(password, index, password.get(0)).trim());
                HikariDataSource ds = poolProperties.getDataSource();
                ds.setConnectionTestQuery(TEST_QUERY);
                ds.setIdleTimeout(TimeUnit.MINUTES.toMillis(10L));
                ds.setConnectionTimeout(TimeUnit.SECONDS.toMillis(3L));
                System.out.println("===================================");
                System.out.println("jdbcDriverName=" + jdbcDriverName);
                if (StringUtils.isNotEmpty(jdbcDriverName)) {
                    // 怎加其他数据库驱动
                    ds.setDriverClassName(jdbcDriverName);
                } else {
                    //默认为mysql驱动
                    ds.setDriverClassName(JDBC_DRIVER_NAME);
                }
                System.out.println("===================================");
                System.out.println("dataSources=" + dataSources);
                dataSources.add(ds);
                callback.accept(ds);
            }
            Preconditions.checkArgument(CollectionUtils.isNotEmpty(dataSources), "no datasource available");
            return dataSources;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    修改PropertiesConstant.java

    	//新增达梦常量
        public static final String DM = "dm";
    
    • 1
    • 2

    修改PropertyUtil.java

    setUseExternalDB(PropertiesConstant.MYSQL
                        .equalsIgnoreCase(getString(PropertiesConstant.SPRING_DATASOURCE_PLATFORM, "")));
    
    • 1
    • 2

    代码后面增加以下代码

    setUseExternalDB(PropertiesConstant.DM
                        .equalsIgnoreCase(getString(PropertiesConstant.SPRING_DATASOURCE_PLATFORM, "")));
    
    • 1
    • 2

    5、运行

    idea运行单机版需要添加VM options配置:-Dnacos.standalone=true,直接springboot run就可以,打包部署到服务器经历的一些问题:
    网上说打出来的包在nacos-distribution/target/目录下有nacos-server-2.1.1.tar.gz文件,一开始用idea打包死活打不出来,在nacos-console/target下有nacos-server.jar,用这个jar运行单机又出现异常:java.net.UnknownHostException: jmenv.tbsite.net,nacos默认是集群部署的,单机启动需要添加参数用-m standalone,用start.sh启动命令:./startup.sh -m standalone 用jar启动命令:java ‘-Dnacos.standalone=true’ -jar ./nacos-server.jar;最后配了maven环境变量,用命令:mvn -Prelease-nacos ‘-Dmaven.test.skip=true’ ‘-Dcheckstyle.skip=true’ clean install -U 在nacos-distribution/target/目录下有nacos-server-2.1.1.tar.gz文件

  • 相关阅读:
    小 A 的卡牌游戏(Gym - 103186B)
    医学图像标注终极指南
    DC综合基本概念:uniquify
    PostgreSql学习:物理复制与逻辑复制
    《隐私计算简易速速上手小册》第2章:关键技术介绍(2024 最新版)
    MySQL数据库基础(数据类型与表操作)
    ffmpeg -sources分析
    uni-app 点击蒙版层时关闭自定义弹窗
    C++面向对象编程(3)——常用关键字介绍(TODO)
    NumPy数组与矩阵(二)
  • 原文地址:https://blog.csdn.net/u010715243/article/details/126584579