2012-08-24 46 views
3

鑑於兩個Web應用程序運行在同一個Tomcat 6.如果你從一個應用程序到另一個應用程序執行http-呼叫,Tomcat會「短路」這個呼叫,還是會一路走出在互聯網上打電話回家之前?Tomcat互聯網應用程序http通信

@thomasz答案顯示需要更多的細節。我們使用Springs RestTemplate進行通信。其可插入式架構可讓您提供自己的ClientHttpRequestFactory。

是否有可能實現ClientHttpRequest,如果請求是本地主機,它可以說服tomcat內部處理它?

回答

4

不,請求會遍歷所有層,包括回送接口。 Tomcat不會以不同方式處理對同一Web容器的請求。畢竟,怎麼樣?您正在通過URLConnectionHttpClient或原始套接字或...訪問某個URL - Tomcat必須以某種方式攔截(儀器)您的應用程序的代碼並動態地用某些內部調用替換HTTP調用。可能,但非常複雜。

更糟糕的是,在高負載情況下,您可能很容易導致死鎖或飢餓。設想你的Tomcat工作者線程池有10個線程,同時你可以從10個併發用戶訪問同一個servlet。每個servlet現在都會嘗試連接到同一個Web容器,但工作線程池已耗盡。所以所有這些servlet都被阻塞,等待閒置的工作線程。但這絕不會發生,因爲他們正在佔領他們所有的人!