我正在继承一个涉及Java Web应用程序的项目,该应用程序的后端由Apache httpd / Tomcat组合提供支持。 Web服务器用于回送JS,静态内容和执行常规负载平衡,而Tomcat通过单个WAR文件回送JSP。
我将在今天或明天稍后访问代码库,但希望提前尝试进行一些研究。
我的问题可以概括为:这两个如何协同工作?
这些只是关于技术如何相互协作的一般性问题。提前谢谢!
答案 0 :(得分:19)
几乎可以肯定的是,Apache。但是,可能存在直接与Tomcat对话的管理进程。谁首先收到HTTP请求?
httpd如何知道何时将JSP请求转发到Tomcat,或仅仅响应请求本身?
从其配置。具体情况会有所不同。例如,它可能使用mod_jk
或mod_jk2
,在这种情况下,您将在配置文件中找到JkMount
指令,例如:
JkMount /*.jsp ajp13_worker
...告诉它将网站根目录中的*.jsp
文件传递给ajp13_worker
,workers.properties
文件中定义了这些文件。
或者可以通过简单的HTTP reverse-proxy安排进行设置。或者别的什么。
httpd如何将请求“传递”给Tomcat并从“Tomcat”“接收”响应?
这取决于配置;它可以是HTTP,可以是AJP,也可以是其他模块。
是否只是将请求/响应“复制并粘贴”到Tomcat正在侦听的端口上?
排序。 :-)请参阅上面的反向代理链接。
是否正在进行某种操作系统级进程间通信?
是。 AFAIK,它都是基于套接字的(而不是共享内存),这意味着(除此之外)Tomcat和Apache不需要在同一台机器上运行。