当前位置:网站首页>Nacos适配oracle11g-修改Nacos源码

Nacos适配oracle11g-修改Nacos源码

2022-06-23 06:23:00 qq_37279783

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

在这里插入图片描述

原网站

版权声明
本文为[qq_37279783]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_37279783/article/details/125391605