springboot项目集成Apollo配置中心,去除内嵌tomcat运行

2022-07-13 09:06:52

先说一下本地环境及情况:
springboot项目,集成了Apollo配置中心、dubbo,jar包启动;原来没有集成Apollo配置中心的情况下,通过配置已经完成了去除内嵌tomcat,后来集成了Apollo配置中心,部署的时候发现部分服务出现了8080端口冲突,仔细排查发现项目启动的时候启动了内嵌的tomcat,但是由于没有配置server.port端口,导致使用默认 8080端口,多个服务启动的时候出现了端口被占用的问题;

本地资源文件截图如下,已删除application.yml等配置文件,配置已添加至Apollo配置中心
resource资源文件

异常截图如下;
异常截图

解决方案:
正常去除内嵌tomcat的方法
1、pom文件,去除依赖tomcat

<!-- SpringBoot 核心包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>`

2、项目启动类添加继承并重写方法,重点是System.setProperty,要把spring.main.web-application-type赋值none到System环境变量中,否则等到配置中心加载这块的时候项目已经使用8080端口启动了

@EnableDubbo@EnableApolloConfig@SpringBootApplication(exclude={ DataSourceAutoConfiguration.class})@MapperScan({"com.soulwell.*.mapper"})publicclassPaymentApplicationextendsSpringBootServletInitializer{publicstaticvoidmain(String[] args){
        System.setProperty("spring.main.web-application-type","none");
        SpringApplication.run(PaymentApplication.class, args);}@Overrideprotected SpringApplicationBuilderconfigure(SpringApplicationBuilder builder){return builder.sources(PaymentApplication.class);}}
  • 作者:用尽晴天
  • 原文链接:https://blog.csdn.net/m0_37463981/article/details/110621993
    更新时间:2022-07-13 09:06:52