当前位置: 首页 > 知识库问答 >
问题:

在2.1.9版本的Spring Cloud API网关上启用HTTP/2支持时出现ClassCastException。释放

胡墨竹
2023-03-14

请参阅我能够启用HTTP/2支持jetty服务器与JDK8的用户交互界面通过排除tomcat启动器和添加jetty启动到Spring Web配置,还添加了jetty-alpn-conscrypt-server, http2-server依赖。

但是在使用Netty server的Spring Cloud API网关端,我尝试了所有步骤,但都没有弄清楚,如何在Spring Cloud API网关中启用HTTP/2,我添加了Netty tcnative boringssl static作为依赖项,现在我遇到了这个错误

2020-11-24 23:34:18.957错误10732---[ctor-超文本传输协议-nio-2]reactor.netty.tcp.TcpServer:[id: 0xf9cd86ed, L:/127.0.0.1:9001-R:/127.0.0.1:58801](H2-1)onUncaughtException(SimpleConnection{Channel=[id: 0xf9cd86ed, L:/127.0.0.1:9001-R:/127.0.0.1:58801](H2-1)})

2020-11-24 23:55:24.385 ERROR 19564 --- [ctor-http-nio-2] reactor.netty.tcp.TcpServer              : [id: 0xb5f89ffb, L:/127.0.0.1:9001 - R:/127.0.0.1:58977](H2 - 1) onUncaughtException(SimpleConnection{channel=[id: 0xb5f89ffb, L:/127.0.0.1:9001 - R:/127.0.0.1:58977](H2 - 1)})

java.lang.ClassCastException: io.netty.handler.codec.http2.Http2MultiplexCodec$Http2MultiplexCodecStreamChannel cannot be cast to io.netty.channel.socket.SocketChannel
    at reactor.netty.http.server.Http2StreamBridgeHandler.channelRead(Http2StreamBridgeHandler.java:77) ~[reactor-netty-0.8.12.RELEASE.jar:0.8.12.RELEASE]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.AbstractHttp2StreamChannel$Http2ChannelUnsafe.doRead0(AbstractHttp2StreamChannel.java:851) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.AbstractHttp2StreamChannel.fireChildRead(AbstractHttp2StreamChannel.java:533) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2MultiplexCodec.onHttp2Frame(Http2MultiplexCodec.java:142) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2FrameCodec$FrameListener.onHeadersRead(Http2FrameCodec.java:569) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2FrameCodec$FrameListener.onHeadersRead(Http2FrameCodec.java:563) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2FrameListenerDecorator.onHeadersRead(Http2FrameListenerDecorator.java:48) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2EmptyDataFrameListener.onHeadersRead(Http2EmptyDataFrameListener.java:63) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onHeadersRead(DefaultHttp2ConnectionDecoder.java:373) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader$1.processFragment(DefaultHttp2FrameReader.java:457) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readHeadersFrame(DefaultHttp2FrameReader.java:464) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:254) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:160) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:174) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:378) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:438) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:505) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:444) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:283) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2MultiplexCodec.channelRead(Http2MultiplexCodec.java:267) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1347) [netty-handler-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.ssl.SslHandler.decodeNonJdkCompatible(SslHandler.java:1236) [netty-handler-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1273) [netty-handler-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:505) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:444) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:283) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) [netty-common-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.39.Final.jar:4.1.39.Final]
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_181]
 

Spring护套:2.1.9。释放Spring的云:格林威治。SR3 Java版本:JDK-8

共有1个答案

巴博耘
2023-03-14

我通过将引导版本升级到2.2.5解决了这个问题。发布和云版本到Hoxton。SR3

 类似资料:
  • 我完全意识到这个问题已经在这个帖子里被问过了: Cassandra:未支持的ClassVersionError 但是,我接受那里给出的答案并不能解决我的问题,因为我确实有一个当前版本的Java,详情如下: java版本“1.7.0_45”java(TM)SE运行时环境(版本1.7-0_45B18)java热点(TM)客户端虚拟机(版本24.45-b08,混合模式,共享) 知道这一点,我在启动Cas

  • 我正在尝试使用Java JTDS驱动程序连接到Scala中的数据库。然而,每当我尝试使用它时,我会得到一个错误,即(Java的?)是错的。 java.lang.unsupportedClassVersionError:net/sourceforge/jtds/jdbcx/jtdsDataSource:Unsupported major.minor版本51.0 null java版本“1.6.0_3

  • 问题内容: 我有以下代码: 我正在尝试查询(例如)。 我不断收到此错误: 什么会导致此错误,我该如何解决? 问题答案: 不知道出了什么问题,但是当我尝试使用库执行相同的操作时,它会起作用: 请注意,两者之间存在差异,我的代码简单得多,它不适用于Cookie,并且不会伪装Safari浏览器。 如果您需要将Cookie与一起使用,则可以在其中找到很好的支持。

  • 我正在尝试设置一个AWS API网关,该网关需要在任何请求的标头中使用API密钥。我设置了swagger来生成json定义,AWS很好地导入了它。但是,当我尝试添加API密钥安全定义时,Amazon拒绝了我的swagger API文档,错误如下: 我想我做错了。。。因此,我尝试了这方面的几种变化。 给定使用springfox创建的Spring Boot配置: 上述api定义如下: 当我运行我的应用

  • 最近我实现了一个新的构建器与gradle运行詹金斯。我们的项目包含jasper报告,所以我在下面添加了一个由jasper报告api提供的蚂蚁任务来编译jasper报告。 一切都很好,编译和预期的工作,但在部署项目到服务器后,在运行时得到以下错误。 [8/3/17 14:38:53:340 EET] 000000f5 SystemOut O ERROR[14:38:53,333-WebContain

  • Spring侦探行李会被弃用吗?如果是,还有什么选择? 是否必须为从版本#2开始的propoded字段名称进行配置?