对nacos进行信创改造,将其中的tomcat替换为保兰德的中间件

Nacos 是阿里巴巴开源的动态服务发现、配置管理和服务管理平台,核心解决微服务架构中服务注册发现、配置中心、服务元数据管理三大核心问题,支持主流微服务框架(Spring Cloud、Dubbo、gRPC 等),兼具易用性、高可用和扩展性,是国内微服务生态的主流中间件之一。在国内微服务技术栈中,Nacos 是配置中心和服务注册发现领域的 "事实标准" 之一,国外项目常用 Consul/Etcd,而国内绝大多数基于 Spring Cloud/Dubbo 的微服务架构,都会优先选择 Nacos。

现在很多的公司,要求软件国产化,中间件国产化,nacos是开源国产的,但是Nacos 自身默认内嵌 Tomcat 提供 Web 服务。在很多公司tomcat是不允许使用的,如果使用nacos原版的话,会被扫描软件扫描到tomcat漏洞。如果是政府和过期单位的话,后果可严重了。

理论上Nacos内嵌的tomcat是可以被替换的,但是在官网没有找到相关资料。我这边客户要求将Tomcat替换为保兰德的BES Server。研究了一下,选择了从源码下手,重新编译Nacos,还是比较简单的,这里贾鲁分享一下。

环境准备

  1. jdk1.8
  2. maven 3.8以上(我使用idea内嵌的3.9)
  3. bes-lite-spring-boot-2.x-starter-9.5.5.002.jar(自己获取,打入本地maven仓库,springboot2对应的都是这个版本)

下载nacos源码

可以从https://github.com/alibaba/nacos/releases下载到nacos不同发布版本的源码,我这里是2.5.2。下载到本地解压

修改依赖

在源码项目的不同pom.xml 文件中搜索spring-boot-starter-web,将其中内嵌的tomcat排除,然后增加保兰德BES Server的依赖。示例如下:

xml 复制代码
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <!-- 排除内嵌的Tomcat -->
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<!-- 新引入 -->
<dependency>
  <groupId>com.bes.appserver</groupId>
  <artifactId>bes-lite-spring-boot-2.x-starter</artifactId>
  <version>9.5.5</version>
</dependency>

编译nacos

运行下面的命令,即可进行编译,打包

bash 复制代码
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

输出的结果在项目的distribution/target/目录下。

启动

启动方式和nacos官方的部署与启动方式一样,可以自己测试

相关推荐
大傻^6 分钟前
Spring AI Alibaba 企业级实战:从0到1构建智能客服系统
java·人工智能·后端·spring·springaialibaba
贼爱学习的小黄11 分钟前
NC BIP增加按钮
java
短剑重铸之日11 分钟前
《ShardingSphere解读》11 解析引擎:SQL 解析流程应该包括哪些核心阶段?(上)
java·后端·spring·shardingsphere·分库分表
Javatutouhouduan15 分钟前
Netty进阶指南:基础+中级+高级+架构行业运用+源码分析
java·netty·java面试·网络io·后端开发·java程序员·互联网大厂
编码忘我17 分钟前
java开发模式之静态代理、动态代理、CGLIB代理
java
冬夜戏雪18 分钟前
实习面经摘录(八)
java
拾年27520 分钟前
别再让 NullPointerException 搞崩你的代码了!Optional + Stream 组合拳详解
java
weixin_4041576822 分钟前
Java高级面试与工程实践问题集(一)
java·开发语言·面试
cyforkk24 分钟前
Spring AOP 进阶:揭秘 @annotation 参数绑定的底层逻辑
java·数据库·spring
清风徐来QCQ24 分钟前
Java2(valueOf,Character,StringBuilder,设计模式)
java·开发语言