假设两个web应用程序在同一个Tomcat6上运行。如果你从一个应用程序到另一个应用程序进行http调用,Tomcat会“短路”这个调用,还是会在呼叫总部之前一直在interwebz上进行?
@thomasz的回答显示了更多细节的需要。我们使用Springs RestTemplate进行通信。它的可插拔架构允许您提供自己的ClientHttpRequestFactory。
有没有可能实现一个ClientHttpRequest,如果请求是本地主机,它可以说服tomcat在内部处理它?
发布于 2012-08-25 01:38:42
不会,请求将通过所有层,包括环回接口。Tomcat不会以不同的方式处理对同一web容器的请求。毕竟,怎么做呢?您正在通过URLConnection或HttpClient或原始套接字访问某些网址...- Tomcat必须以某种方式截取(插入)应用程序的代码,并用一些内部调用动态替换HTTP调用。有可能,但非常复杂。
更糟糕的是,在高负载下很容易导致死锁或饥饿。假设您的Tomcat工作线程池有10个线程,同时您从10个并发用户访问相同的servlet。现在,每个servlet都尝试连接到相同的web容器,但工作线程池已耗尽。所以所有这些servlet都在阻塞,等待空闲的工作线程。但这永远不会发生,因为他们占据了所有的空间!
https://stackoverflow.com/questions/12114034
复制相似问题