我以前使用过Apache Web服务器,使用PHP,Ruby,并提供静态JavaScript / HTML页面。
我对Tomcat感到困惑的一件事基本上是 为什么首先存在Tomcat,而不是将Apache与已安装的JVM一起使用?为什么这些都是流行的语言Java是否需要它自己的专用容器,即Tomcat?
如果想要使用PHP来提供内容,只需在Apache服务器上安装PHP,当用户访问mysite.com/mypage.php时就会发生这种情况:
使用Java时,为什么它与此不一样?
在我看来,它应该是这样的:只需在Apache服务器上安装Java和JVM,然后当用户访问mysite.com/mypage时就会发生这种情况:
是否因为需要编译Java文件,并且在每次请求时重新编译它都没有意义?那么为什么不将请求映射到正确的.class
文件?
对于那些对Tomcat充满信心的人来说,这可能听起来很荒谬,但正如你所看到的,我很遗憾没有得到它。
答案 0 :(得分:1)
Tomcat是一个apache项目。虽然理论上可以使用本机代码实现JSP和Servlet容器(如Tomcat),而不是最终选择的实现策略(我相信Websphere确实遵循该实现模型)。但是,tomcat确实有Connectors并引用
<强> AJP 强>
使用单个服务器时,在Tomcat实例前使用本机Web服务器时的性能大多数时候比使用默认HTTP连接器的独立Tomcat差得多,即使Web应用程序的很大一部分是静态文件。如果出于任何原因需要与本机Web服务器集成,则AJP连接器将提供比代理HTTP更快的性能。从Tomcat的角度来看,AJP集群是最有效的。它在功能上等同于HTTP群集。
此Tomcat版本支持的本机连接器为:
JK 1.2.x with any of the supported servers mod_proxy on Apache HTTP Server 2.x (included by default in Apache HTTP Server 2.2), with AJP enabled
答案 1 :(得分:1)
Php和Java是可以独立于Apache运行的开发平台。为了运行PHP脚本/应用程序,您首先需要安装PHP解释器,对于Java,您需要安装一个JVM作为Java文件/应用程序的解释器。
为了使用Apache运行PHP文件,你必须启用mod_php
扩展,这基本上是一个允许从Apache调用PHP解释器并执行php脚本的程序。 J2EE平台需要Web容器(https://docs.oracle.com/javaee/5/tutorial/doc/bnabo.html)来执行或运行Web应用程序。 Apache可以使用模块连接J2EE Web容器,通常使用AJP允许Apache与Tomcat通信并执行Java Servlets或JSP页面。
您不需要Apache来运行Java Web应用程序,但是您必须使用J2EE Web容器来运行它们,因此技术上Tomcat可以用作Web服务器但不建议用于生产,因为Apache会有更好的特别是在提供静态内容时的性能