nacos默认只支持mysql数据库,要适配oracle数据源,必须得修改源码后再编译部署

一.源码获取

下载nacos: link源码,下载完成之后将分支切换到 feature_multiple_datasource_support
在这里插入图片描述

二. jar包引入及更换

由于此分支支持oracle12c,需要更换驱动包版本

1.nacos-all 下pom文件修改
<properties>
		...
        <!--    移除ojdbc8依赖版本    -->
        <!--        <ojdbc.version>19.3.0.0</ojdbc.version>-->
        <!--     更改oracle版本为ojdbc7-->
        <ojdbc.version>12.1.0.1.0</ojdbc.version>
        ...
</properties>

<!-- 管理依赖版本号,子项目不会默认依赖 -->
<dependencyManagement>
    <dependencies>
    ...
         <!-- oracle包 -->
         <dependency>
             <groupId>com.oracle</groupId>
             <artifactId>ojdbc7</artifactId>
             <version>${ojdbc.version}</version>
         </dependency>
	...
<!--移除ojdbc8依赖版本-->
<!--            <dependency>-->
<!--                <groupId>com.oracle.ojdbc</groupId>-->
<!--                <artifactId>ojdbc8</artifactId>-->
<!--                <version>${ojdbc.version}</version>-->
<!--            </dependency>-->
...
    </dependencies>
</dependencyManagement>
2.nacos-config的pom文件增加引入需要支持的数据库驱动,并取消oracle高版本驱动引入
<!--        <dependency>-->
<!--            <groupId>com.oracle.ojdbc</groupId>-->
<!--            <artifactId>ojdbc8</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
        </dependency>

三.对数据库映射实体的主键逻辑修改【需要配合后续的序列语句使用】

因为mysql使用的是自增序列,oracle11g并不支持,所以在使用jpa时需要指定主键及使用的索引的名字,需要对实体类进行修改

1. nacos-config下

com.alibaba.nacos.config.server.modules.entity
这里只举一个示例,蓝色部分都是有修改的
在这里插入图片描述

需要注意的是PermissionsEntity类的resource字段,因为是oracle数据库关键字,所有在建表语句(下载建表语句)中修改成resources,需要在对应字段修改下

/**
     * resource.
     */
    @Column(name = "resources")
    private String resource;
四.修改nacos-console配置文件application.properties
# oracle数据库配置
nacos.datasource.type=ORACLE

nacos.datasource.relational.dsList[0].url=jdbc:oracle:thin:@xxx:1521:orcl
nacos.datasource.relational.dsList[0].username=xxx
nacos.datasource.relational.dsList[0].password=xxx
nacos.datasource.relational.dsList[0].driver-class-name=oracle.jdbc.driver.OracleDriver
nacos.datasource.relational.dsList[0].hikari.connection-timeout=10000
nacos.datasource.relational.dsList[0].hikari.idle-timeout=120000
nacos.datasource.relational.dsList[0].hikari.max-lifetime=240000
nacos.datasource.relational.dsList[0].hikari.maximum-pool-size=20
nacos.datasource.relational.dsList[0].hikari.data-source-properties.cachePrepStmts=true
nacos.datasource.relational.dsList[0].hikari.data-source-properties.prepStmtCacheSize=250
nacos.datasource.relational.dsList[0].hikari.data-source-properties.prepStmtCacheSqlLimit=2048
nacos.datasource.relational.dsList[0].hikari.connection-test-query=SELECT 1 FROM dual
五.idea启动单机nacos进行调试

nacos-console模块的Nacos启动类
在这里插入图片描述
单机模式启动,环境变量-Dnacos.standalone=true

六.启动失败,找不到符号

如果报错找不到符号com.alibaba.nacos.consistency.entity
在这里插入图片描述
最简单的办法就是执行 mvn compile,原因是这个包目录是由protobuf在编译时自动生成
重新启动即可

七.访问页面,localhost:8848/nacos 用户/密码:nacos/nacos

在这里插入图片描述

八.打包发布

进行打包发布,在nacos-all目录下执行cmd命令

mvn -Prelease-nacos -Dmaven.test.skip=true -Dpmd.skip=true -Drat.skip=true -Dcheckstyle.skip=true clean install -U

最后在distributioni目录下的target就会出现压缩文件了,这样就相当于从nacos官网直接下载的压缩包,具体nacos配置可以自行完成。
在这里插入图片描述

更多推荐