gateway与spring

网友投稿 205 2022-10-11


gateway与spring

gateway与spring-boot-starhttp://ter-web 冲突

环境:

SpringCloud 版本 ---- Finchley.SR2

SpringBoot 版本 ---- 2.0.6.RELEASE

问题描述:

将 zuul 网关升级为 gateway 时,引入gateway 依赖启动网关子项目报错

引入的依赖:

org.springframework.cloud

spring-cloud-starter-gateway

启动网关报错

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

2019-12-31 10:26:35.211 ERROR 13124 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :

***************************

APPLICATION FAILED TO START

***************************

Description:

Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type 'org.springframework.http.codec.ServerCodecConfigurer' that could not be found.

Action:

Consider defining a bean of type 'org.springframework.http.codec.ServerCodecConfigurer' in your configuration.

Process finished with exit code 1

问题分析:

查看控制台打印日志:

可以看到是 web 依赖下的 tomcat 容器启动失败,且打印出 nio 异常。

回顾一下 zuul 和 gateway 的区别

Zuul: 构建于 Servlet 2.5,兼容3.x,使用的是阻塞式的API,不支持长连接,比如 websockets。

Gateway构建于 Spring 5+,基于 Spring Boot 2.x 响应式的、非阻塞式的 API。同时,它支持 websockets,和 Spring 框架紧密集成

报错原因:启动时默认使用了 spring-boot-starter-web 的内置容器,不支持非阻塞

问题解决:

有两种解决方式:

1、 排除 web 内置容器

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-tomcat

2、使用 spring-webflux 模块

webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务

org.springframework.boot

spring-boot-starter-webflux

成功启动项目

gateway 网关版本冲突问题

1、spring-cloud版本

Finchley.RELEASE

2、sprring-boot版本

2.0.3.RELEASE

3、错误描述

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

2019-05-21 16:53:50.138 ERROR 15308 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :

***************************

APPLICATION FAILED TO START

***************************

Description:

Parameter 0 of method modifyReqhBMiuoQrwbuestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type 'org.springframework.http.codec.ServerCodecConfigurer' that could not be found.

Action:

Consider defining a bean of type 'org.springframework.http.codec.ServerCodecConfigurer' in your configuration.

4、原因

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-gateway

版本冲突

5、解决

可以删除:

org.springframework.boot

spring-boot-starter-web


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:汉源高科4路双向开关量光端机报警红外对射光电转换器红外对射报警继电器开关量光纤转换器
下一篇:建造接通海峡两岸海底隧道的基本要求(海底隧道建设方法)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~