如何解决Spring Cloud Gateway和OAuth2不兼容的问题

技术如何解决Spring Cloud Gateway和OAuth2不兼容的问题今天就跟大家聊聊有关如何解决Spring Cloud Gateway和OAuth2不兼容的问题,可能很多人都不太了解,为了让大家更加了解,小编

今天就跟大家聊聊有关如何解决春云网关和OAuth2不兼容的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

问题版本

春云版本芬奇利:号。释放;排放;发布

Oauth3版本: 2.0.0.RELEASE

春天版本: 5.0.7.RELEASE

错误描述

在春云网关与OAuth3的整合过程中遇到启动错误

如下:

2019-10-0901:16:27 .235错误18320-[ost-startStOp-1]o . s . b . web。嵌入式。雄猫。tomcatstarter : error startingmcatcontext。异常3360组织。弹簧框架。豆子。工厂。bean创建例外。消息: error screenatingbanwith name ' servletendpointregistrator '定义类路径资源[org/spring framework/bootenstedexception org。弹簧框架。比恩。beans实例化except :未能实例化[org。弹簧框架。靴子。安森。端点。网络。servletendpointregistrator]:工厂方法“servletendpointregistrator”三个异常;nestedexceptionorg。弹簧框架。豆子。工厂。不可持续的unsustaifieddependencycexception :创建名为“gateway controllerendpoint”的bea时出错定义类路径资源[org/spring framework/cloud/gateway auto configuration $ gateway activator configuration。class]:不可持续的dependency cexpressthrough method“gateway controllerendpoint”参数2;nestedexceptionorg。弹簧框架。豆子。工厂。不可持续unsustaifieddependencycexception 3360创建名为“modifierequestbodygatewayfilterfactory”的bea时出错定义类路径资源[org/spring framework/cloud/gateway auto configuration。类]:不可持续的dependencycxpressthrough method“modifierrequestbodygatewayfilterfactory”参数0;嵌套的

nbsp;exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.http.codec.ServerCodecConfigurer' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2019-10-09 01:16:27.280  INFO 18320 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2019-10-09 01:16:27.287  WARN 18320 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [reactor-http-nio-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
 sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
 sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 java.lang.Thread.run(Thread.java:748)
2019-10-09 01:16:27.287  WARN 18320 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [reactor-http-nio-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
 sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
 sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 java.lang.Thread.run(Thread.java:748)
2019-10-09 01:16:27.288  WARN 18320 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [reactor-http-nio-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
 sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
 sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 java.lang.Thread.run(Thread.java:748)
2019-10-09 01:16:27.288  WARN 18320 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [reactor-http-nio-4] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
 sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
 sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 java.lang.Thread.run(Thread.java:748)
2019-10-09 01:16:27.291  WARN 18320 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [reactor-http-nio-5] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
 sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
 sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 java.lang.Thread.run(Thread.java:748)
2019-10-09 01:16:27.292  WARN 18320 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [reactor-http-nio-6] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
 sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
 sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 java.lang.Thread.run(Thread.java:748)
2019-10-09 01:16:27.293  WARN 18320 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [reactor-http-nio-7] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
 sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
 sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 java.lang.Thread.run(Thread.java:748)
2019-10-09 01:16:27.294  WARN 18320 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [reactor-http-nio-8] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
 sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
 sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
 sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
 java.lang.Thread.run(Thread.java:748)
2019-10-09 01:16:27.300  WARN 18320 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
2019-10-09 01:16:27.320  INFO 18320 --- [           main] ConditionEvaluationReportLoggingListener : 
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-10-09 01:16:27.635 ERROR 18320 --- [           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.

你遇到的情况有可能和我稍有不同

官方解答

问题描述ISSUES : https://github.com/spring-cloud/spring-cloud-gateway/issues/478

官方解答ISSUES : https://github.com/spring-cloud/spring-cloud-security/issues/141

简单来说是 Spring Security 和 Spring Cloud Gateway 不兼容的问题.

解决方法有二:

1. 放弃整合,在Gateway中实现自己的鉴权方式
2. 将 Spring Security 升级为 5.1.X

此处有新版本解决方案实例 : https://github.com/artemMartynenko/spring-cloud-gateway-oauth3-sso-sample-application

题外话

开源框架的版本真是永远也追不上,不要盲目追求新版本

最优的技术是能稳定支撑自己业务的技术,而不是最新的技术.

看完上述内容,你们对如何解决Spring Cloud Gateway和OAuth2不兼容的问题有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/42834.html

(0)

相关推荐

  • 正三棱柱的性质,正三棱柱与直三棱柱有区别吗

    技术正三棱柱的性质,正三棱柱与直三棱柱有区别吗根据三棱柱的基本性质和分类,可知正三棱柱和直三棱柱的区别为底面不同正三棱柱的性质、侧面不同、范围不同,具体区别如下:1、棱柱的底面不同正三棱柱的底面是全等的正三角形,直三棱柱

    生活 2021年10月30日
  • 志愿者申请书,红十字会志愿者申请书怎么写

    技术志愿者申请书,红十字会志愿者申请书怎么写参考:我叫XX,一直梦想着有一天能加入青年志愿者服务队,现在我郑重地写下我的入队申请书.青年志愿者是一个光荣的称号,更是一个光荣的团体,每个志愿者都不断的为社会贡献着自己力所能

    生活 2021年10月22日
  • ASP怎样循环读取数据库记录

    技术ASP怎样循环读取数据库记录这篇文章给大家介绍ASP怎样循环读取数据库记录,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"

    攻略 2021年12月1日
  • Linux有哪些常用配置

    技术Linux有哪些常用配置这篇文章将为大家详细讲解有关Linux有哪些常用配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. Linux下安装JDK方法一: 使用yum命令安装(

    攻略 2021年11月21日
  • java项目会用到main方法吗(java main方法可以有几个)

    技术Java main方法面试题有哪些本篇内容主要讲解“Java main方法面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java main方法面试题有哪些”吧

    攻略 2021年12月22日
  • 自动生成makefile并编译步骤(makefile实现模块化编译)

    技术GNU automake自动生成Makefile的方法及案例分析今天就跟大家聊聊有关GNU automake自动生成Makefile的方法及案例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容

    攻略 2021年12月23日