2014-12-09 42 views
0

看起來確切的問題已經被作者詢問並回答過。不幸的是,原來的論壇現在是隻讀的,我不能再延伸或直接向作者發送消息。 (dangling-ports-via-spring-in-close-wait通過「CLOSE_WAIT」中的彈簧遠程處理懸掛端口

我的環境:

  • 的apache-tomcat的-7.0.53
  • CommonsHttpInvokerRequestExecutor
  • 春3.2.11.RELEASE
  • 的HttpClient-4.3.5

我也看到很多CLOSE_WAIT連接。

「獲取httpclient的句柄並關閉應用程序的套接字」是否正確?

如果有人可以提供一個代碼片段如何從應用程序訪問httpclient? 如果這不是正確的方法,那麼修復它的正確方法是什麼?

回答

0

它看起來像紀堯姆·弗洛朗有答案:Using HttpClient properly

一個簡單的方法是添加:method.addHeader(「連接」,「關閉」); 有關其他避免CLOSE_WAIT的方法,請閱讀他的博客條目。

0

我有幾乎同樣的問題: 我用org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean調用從一個應用程序的方法到另一個。這兩款應用都部署在同一個tomcat上。

當我們用很多連接進行壓力測試時,結果讓我們有了netstat -a到tomcat的數百個連接。他們中的大多數都有狀態CLOSE_WAIT。幾個小時後,他們仍然在那裏。

閱讀了一些文檔後,我決定改變HttpInvokerProxyFactoryBean。它有httpInvokerRequestExecutor領域,這是默認設置爲org.springframework.remoting.httpinvoker.SimpleHttpInvokerRequestExecutor 然而,有更先進的org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor 支持認證,連接池等。通常情況下,它應該正確管理連接池,但它不會。

我也嘗試添加標題連接關閉標題,但它並沒有幫助。

因此,在一天結束時,我決定通過RabbitMQ進行遠程調用。