第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java bayeux 客戶端在空閑時與 TimeoutException 斷開連接

Java bayeux 客戶端在空閑時與 TimeoutException 斷開連接

達令說 2022-06-30 11:51:04
我正在初始化 Bayeux 客戶端:SslContextFactory sslContextFactory = new SslContextFactory(true);HttpClient httpClient = new HttpClient(sslContextFactory);httpClient.start();Map<String, Object> options = new HashMap<String, Object>();ClientTransport transport = new LongPollingTransport(options, httpClient);BayeuxClient client =  new BayeuxClient("https://localhost:8483/cometd/", transport);client.handshake();boolean handshaken = client.waitFor(20000, BayeuxClient.State.CONNECTED);if (!handshaken) {    LOGGER.info("Failed to handshake");    throw new RuntimeException("Failed to handshake");}我用它與服務(wù)器進行一些通信,它可以工作,它訂閱頻道、發(fā)送、接收,然后我讓它閑置一段時間。我得到以下異常:java.util.concurrent.TimeoutException: Idle timeout 20000 msat org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onIdleExpired(HttpConnectionOverHTTP.java:145)at org.eclipse.jetty.io.ssl.SslConnection.onIdleExpired(SslConnection.java:286)at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:401)at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:166)at org.eclipse.jetty.io.IdleTimeout$1.run(IdleTimeout.java:50)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)
查看完整描述

2 回答

?
猛跑小豬

TA貢獻1858條經(jīng)驗 獲得超8個贊

事實證明,我阻塞了 cometD 線程:

我構(gòu)建了一個命令行工具來檢查服務(wù)器,當我收到一條消息(帶有來自 cometD 的線程)時,我持有該線程以供用戶輸入。如果我持有該線程足夠長的時間,cometD 將與上述異常斷開連接。

解決方案:當你收到 CometD 的消息時,不要持有它,使用新線程。


查看完整回答
反對 回復(fù) 2022-06-30
?
子衿沉夜

TA貢獻1828條經(jīng)驗 獲得超3個贊

默認心跳由服務(wù)器端timeout參數(shù)控制,默認為30秒。這意味著當系統(tǒng)空閑時,長輪詢每 30 秒發(fā)生一次。

您已idleTimeout在 20 秒時配置了客戶端,這從您的異常堆棧跟蹤中可以明顯看出。

當系統(tǒng)空閑時,客戶端將在心跳(長輪詢)響應(yīng)之前超時連接,導(dǎo)致您看到的錯誤。

將客戶端配置為idleTimeout大于心跳的值就足夠了timeout,或者 - 等效地 - 將心跳設(shè)置timeout為小于客戶端的值idleTimeout。


查看完整回答
反對 回復(fù) 2022-06-30
  • 2 回答
  • 0 關(guān)注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號