2017-01-16 385 views
0

我正在尝试创建一个会话并将其重复用于每个请求。 的问题是,如果我尝试30秒后发送请求的会议createad后,我得到:Jetty HTTP/2:如何设置客户端会话超时?

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); 

但doesen't似乎工作

回答

1

如果您使用的是HttpClient,则客户端闲置超时可以使用HttpClient.setIdleTimeout(long)进行设置。

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

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

+0

感谢您的回复。 我试过如下 HTTP2Client client = new HTTP2Client(); client.setIdleTimeout(-1); 但我的会话在30秒后关闭 – MyYyY

+0

如果客户端禁用了空闲超时,则会话仍然可以由服务器关闭。如果你控制服务器,你必须调用'ServerConnector.setIdleTimeout(long)'。 – sbordet

+0

非常感谢! 它的工作! 我在服务器端设置超时,一切看起来都不错。 – MyYyY