【问题标题】:Jetty HTTP/2: How to set client session timeout?Jetty HTTP/2:如何设置客户端会话超时?
【发布时间】:2017-05-31 16:09:44
【问题描述】:

我正在尝试创建一个会话并为每个请求重用它。 问题是如果我在会话创建后 30 秒后尝试发送请求,我会得到:

Caused by: java.nio.channels.ClosedChannelException
at  org.eclipse.jetty.http2.HTTP2Session$ControlEntry.succeeded
(HTTP2Session.java:1224) ~[http2-common-9.4.0.v20161208.jar:9.4.0.v20161208]

我试过这样

   SSLSessionContext clientSessionContext = sslContextFactory.getSslContext().getClientSessionContext();
  clientSessionContext.setSessionTimeout(60000);

但它似乎不起作用

【问题讨论】:

    标签: jetty http2


    【解决方案1】:

    如果您使用HttpClient,可以使用HttpClient.setIdleTimeout(long) 设置客户端空闲超时。

    如果您使用的是低级HTTP2Client,则可以使用HTTP2Client.setIdleTimeout(long) 设置客户端空闲超时。

    两者都将控制连接/会话空闲超时,这显然是您想要的。负值将禁用空闲超时。

    【讨论】:

    • 感谢您的回复。我尝试如下 HTTP2Client client = new HTTP2Client(); client.setIdleTimeout(-1);但我的会话在 30 秒后关闭
    • 如果客户端禁用了空闲超时,服务器仍然可以关闭会话。如果你控制服务器,你必须调用ServerConnector.setIdleTimeout(long)
    • 非常感谢!有效!我在服务器端设置了超时,一切看起来都很好。
    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 2014-03-01
    • 2013-07-16
    • 1970-01-01
    • 2017-10-29
    • 2011-04-04
    • 2021-03-13
    • 2011-07-11
    相关资源
    最近更新 更多