2017-01-16 102 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