Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jetty Http2客户端的问题_Jetty_Embedded Jetty_Http2_Jetty 9 - Fatal编程技术网

Jetty Http2客户端的问题

Jetty Http2客户端的问题,jetty,embedded-jetty,http2,jetty-9,Jetty,Embedded Jetty,Http2,Jetty 9,我发现Jetty 9.4.19 Http2客户端出现以下异常。服务器是在Jetty上运行的Spring引导应用程序(2.1.8版本) Request failed: java.io.IOException: protocol_error/invalid_hpack_block at org.eclipse.jetty.http2.client.http.HttpReceiverOverHTTP2.onFailure(HttpReceiverOverHTTP2.java:184) at org.e

我发现Jetty 9.4.19 Http2客户端出现以下异常。服务器是在Jetty上运行的Spring引导应用程序(2.1.8版本)

Request failed: java.io.IOException: protocol_error/invalid_hpack_block
at org.eclipse.jetty.http2.client.http.HttpReceiverOverHTTP2.onFailure(HttpReceiverOverHTTP2.java:184)
at org.eclipse.jetty.http2.HTTP2Stream.notifyFailure(HTTP2Stream.java:611)
at org.eclipse.jetty.http2.HTTP2Stream.onFailure(HTTP2Stream.java:361)
at org.eclipse.jetty.http2.HTTP2Stream.process(HTTP2Stream.java:267)
at org.eclipse.jetty.http2.HTTP2Session.onStreamFailure(HTTP2Session.java:513) 
at org.eclipse.jetty.http2.parser.Parser$Listener$Wrapper.onStreamFailure(Parser.java:404)
at org.eclipse.jetty.http2.parser.BodyParser.notifyStreamFailure(BodyParser.java:235)
at org.eclipse.jetty.http2.parser.BodyParser.streamFailure(BodyParser.java:228) 
at org.eclipse.jetty.http2.parser.HeaderBlockParser.parse(HeaderBlockParser.java:106) 
at org.eclipse.jetty.http2.parser.HeadersBodyParser.parse(HeadersBodyParser.java:172) 
at org.eclipse.jetty.http2.parser.Parser.parseBody(Parser.java:194) 
at org.eclipse.jetty.http2.parser.Parser.parse(Parser.java:123) 
at org.eclipse.jetty.http2.HTTP2Connection$HTTP2Producer.produce(HTTP2Connection.java:248) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produceTask(EatWhatYouKill.java:357) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:181) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132) 
at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:170) 
at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:125) 
at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:348) 
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) 
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:427) 
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:321) 
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159) 
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) 
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) 
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) 
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917) 
at java.lang.Thread.run(Unknown Source) [?:?]

非常感谢任何指针。

如异常报告所示,服务器已发送无效的HPACK块

这是什么服务器?雄猫

如果通过将类别
org.eclipse.Jetty.http2
设置为
DEBUG
,为Jetty
HTTP2Client
启用调试日志,您将获得有关客户端认为错误的更多详细信息

服务器可能发送了无效的头或类似的内容


由于您基于Spring Boot,因此也可以在服务器端启用Jetty(如果尚未启用),如图所示,并查看问题是否仍然存在。

当客户端尝试读取响应时,出现上述异常,请求在服务器上成功处理。在Jetty上运行的客户端和服务器之间存在MTL。我将在客户端启用“org.eclipse.jetty.http2”包的调试日志,并更新线程。头似乎有问题,我需要弄清楚,但我已跳过从服务器发送头,我没有看到错误。多亏了HTTP/2禁止某些HTTP头,但是如果应用程序正在设置它们,Jetty服务器不会将它们过滤掉。这是Jetty 9.4.21中的问题并已修复(此时,已准备发布,但尚未发布)。问题是由于伪标题。Pseudo header“:status”被添加到常规headers块中,这导致了问题。原因是,基于Http2 spring boot的服务器正在将请求代理到另一个Http2服务器,并返回代理服务器发送的头。在碰撞spring boot版本后出现同样的问题,但也尝试了最新的9.4.21 jetty,但仍有异常,如由以下原因引起的
:java.io.IOException:cancel\u stream\u error