3

给定在同一个 Tomcat 6 上运行的两个 Web 应用程序。如果您从一个应用程序到另一个应用程序进行 http 调用,Tomcat 会“短路”这个调用,还是会在调用 home 之前一直在 interwebz 上消失?

@thomasz 答案表明需要更多细节。我们正在使用 Springs RestTemplate 进行通信。它的可插入架构允许您提供自己的 ClientHttpRequestFactory。

是否有可能实现一个 ClientHttpRequest ,如果请求是对本地主机的,它可以说服 tomcat 在内部处理它?

4

1 回答 1

4

不,请求将通过所有层,包括环回接口。Tomcat 不会以不同的方式处理对同一个 Web 容器的请求。毕竟,如何?您正在通过URLConnectionorHttpClient或原始套接字访问某些 URL 或... - Tomcat 必须以某种方式拦截(检测)您的应用程序代码,并用某些内部调用动态替换 HTTP 调用。可能,但非常复杂。

更糟糕的是,在高负载下很容易导致死锁或饥饿。想象一下,您的 Tomcat 工作线程池有 10 个线程,同时您从 10 个并发用户访问同一个 servlet。现在每个 servlet 都尝试连接到同一个 Web 容器,但工作线程池已耗尽。所以所有这些 servlet 都是阻塞的,等待空闲的工作线程。但这永远不会发生,因为他们正在占领他们所有人!

于 2012-08-24T17:38:41.957 回答