【问题标题】:Tomcat inter webapp http communicationTomcat 间 webapp http 通信
【发布时间】:2012-08-24 17:26:33
【问题描述】:
给定在同一个 Tomcat 6 上运行的两个 Web 应用程序。如果您从一个应用程序到另一个应用程序进行 http 调用,Tomcat 会“短路”这个调用,还是会在调用之前一直在 interwebz 上消失回家?
@thomasz 的回答表明需要更多细节。我们正在使用 Springs RestTemplate 进行通信。它的可插入架构允许您提供自己的 ClientHttpRequestFactory。
是否有可能实现一个ClientHttpRequest,如果请求是本地主机,它可以说服tomcat在内部处理它?
【问题讨论】:
标签:
rest
tomcat
web-applications
resttemplate
【解决方案1】:
不,请求将通过所有层,包括环回接口。 Tomcat 不会以不同的方式处理对同一个 Web 容器的请求。毕竟,如何?您正在通过URLConnection 或HttpClient 或原始套接字或...访问某个URL - Tomcat 必须以某种方式拦截(检测)您的应用程序的代码,并用一些内部调用动态替换HTTP 调用。可能,但非常复杂。
更糟糕的是,在高负载下很容易导致死锁或饥饿。想象一下,您的 Tomcat 工作线程池有 10 个线程,同时您从 10 个并发用户访问同一个 servlet。现在每个 servlet 都尝试连接到同一个 Web 容器,但工作线程池已耗尽。所以所有这些 servlet 都是阻塞的,等待空闲的工作线程。但这永远不会发生,因为它们都在占据它们!