【问题标题】:Difference between the Apache HTTP Server and Apache Tomcat? [closed]Apache HTTP 服务器和 Apache Tomcat 之间的区别? [关闭]
【发布时间】:2010-09-07 00:50:31
【问题描述】:

Apache HTTP Server 和 Apache Tomcat 在功能方面有什么区别?

我知道 Tomcat 是用 Java 编写的,而 HTTP Server 是用 C 编写的,但除此之外,我真的不知道它们是如何区分的。它们有不同的功能吗?

【问题讨论】:

  • 我在我的博客中添加了一个摘要,也许它可以帮助某人:tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html
  • 我想知道 OP 到底在问什么,但我不明白为什么它被关闭了。幸运的是有答案。
  • Apache Web 服务器和 Apache Tomcat 是针对不同目的而调整的两种不同工具。如果我们不能再通过事实和专业知识来区分他们的用例,那么我们就会陷入遗憾的境地。这种结束“争论性”问题的动力已经过时了。也许版主需要更多的见识和更少的固执己见。正如@FlorianF 所说,至少现在有了答案。
  • 鉴于赞成票的数量 - 这不应该被关闭 - 而应该被锁定 - 因为它实际上是一个非常好的问题,有有用的答案。
  • 关于此问题的 closed 通知说它要求答案具有客观内容,但预计此问题将产生主观答案内容 - 大多数答案似乎包含客观内容(尤其是较高的-投票答案)而不是主观的 - 所以这个问题应该是未关闭的。对主观性的恐惧从未真正发生过,我不同意这个问题一开始就冒着主观的风险。

标签: apache tomcat webserver


【解决方案1】:

Apache Tomcat 用于部署您的 Java Servlet 和 JSP。因此,在您的 Java 项目中,您可以构建您的 WAR(Web ARchive 的缩写)文件,然后将其放入 Tomcat 的部署目录中。

所以基本上 Apache 是一个 HTTP 服务器,服务于 HTTP。 Tomcat 是一个服务于 Java 技术的 Servlet 和 JSP 服务器。

Tomcat 包括 Catalina,它是一个 servlet 容器。最后,servlet 是一个 Java 类。 JSP 文件(类似于 PHP 和较旧的 ASP 文件)生成为 Java 代码(HttpServlet),然后由服务器编译为 .class 文件并由 Java 虚拟机执行。

【讨论】:

  • “Apache 正在 [...] 服务 HTTP”是什么意思? Tomcat 不是也提供(也就是超文本)HTTP 服务吗?为什么 Tomcat 不能简单地成为“mod_java”Apache 模块?你能解释一下吗?
  • Tomcat 是一个 servlet 容器。最后,servlet 是一个 Java 类。 JSP 文件(类似于 PHP 或 ASP 文件)生成为 Java 代码(HttpServlet),然后由服务器编译为 .class 文件并由 Java 虚拟机执行。 - 除此之外,这个论坛在这里很好地解释了 Apache HTTPD 和 Tomcat 之间的区别:coderanch.com/t/85182/Tomcat/…
  • Tomcat 确实带来了功能强大的 Web 服务器。 Tomcat 是一个 Servlet/JSP 容器并且还提供了一个 Web 服务器。 Tomcat的web服务器相当不错,能够处理大部分中小型网站的需求。由于支持 Java NIO 和 64 位内存,Tomcat 的 Catalina 模块甚至可以很好地服务于一些规模较大的网站。由于各种原因,有些人选择忽略 Catalina,而使用 Apache httpd Web 服务器产品背后的 Tomcat 的 Servlet 功能。
  • 更正我的评论:Coyote 是 Tomcat 中负责 Web 服务的模块。 Catalina 是执行 Servlet 的模块。 Jasper 是处理 JSP 的模块。
  • @KorayTugay 是的。 Tomcat = ( Web Server + Servlet container + JSP environment )。当您运行 Tomcat 的 startup.sh 脚本时,Web 服务器默认为 ON,在端口 8080 上侦听传入连接(HTTP 调用)。 Tomcat 是纯 Java,具有自己的 Web 服务器实现(Coyote)。相比之下,Apache HTTP Server (AHS) 具有完全独立的 Web 服务器实现,使用本机 C/C++ 代码。 AHS 非常灵活且功能强大,但通常过于矫枉过正。 Tomcat 自己的 Web 服务器运行良好。仅在真正需要时使用 AHS。
【解决方案2】:

除了上面的好答案之外,我认为应该说 Tomcat 内置了自己的 HTTP 服务器,并且在提供静态内容方面也具有完整的功能。根据您的 java 虚拟机配置,它实际上可以胜过通过 apache 中的传统连接器(例如 mod_proxy 和 mod_jk)。

也就是说,经过全面优化的 Tomcat 服务器应该能够快速提供静态文件,如果除了静态内容之外,您还有 Java servlet、JSP 和 ColdFusion 文件,您可能会发现 Tomcat 本身的工作非常出色。

【讨论】:

  • 是的。许多人仍然使用除了他们的 Tomcat 之外的额外 Apache 设置。在大多数情况下这是不必要的。
  • Apache http 中很少有其他服务器支持的最强大的部分是能够在应用程序必须看到请求之前重新路由和重写请求,即通过mod_rewrite 引擎和条件环境注入。 mod_proxy 提供基本的负载平衡(并结合 mod_jk 提供基本的粘性会话/负载平衡的 tomcat 实例之间的共享状态)。
【解决方案3】:
  1. Apache 是一个通用的 http 服务器,它支持许多 Tomcat 不支持的高级选项。
  2. 虽然 Tomcat 可用作通用 http 服务器,但您也可以将 Apache 和 Tomcat 设置为与 Apache 一起提供静态内容并将动态内容请求转发给 Tomcat。

【讨论】:

  • 最后不是所有的网络都是静态的吗?我的理解是,Tomcat 生成“一个”静态内容(动态),然后 Apache 将提供此服务。所以 Tomcat 永远不会真正提供动态内容或任何东西,它只会在需要时生成它。
  • @KorayTugay 您混淆了您的条款。 “在需要时生成”正是“动态”的意思,与“静态”正好相反。 Apache HTTP Server 的主要目的是提供静态内容,而 Servlet 技术的主要目的是动态生成内容(动态内容)。
  • @BasilBourque 我对 Tomcat 实际上在这里提供内容感到困惑。它只会生成内容,与 Apache Http Server 一起使用时不会提供内容。可能您是对的,我只是感到困惑,但对我来说,我仍然会说,当一起使用时,Apache 服务,Tomcat 在需要时生成静态内容。如果不使用 Apache,Tomcat 中的 Coyote 会提供服务,而 Catalina 和 Jesper 会生成动态内容。
  • @KorayTugay 是的,您的最后评论是正确的。如果使用 Apache HTTP Server + Tomcat,那么 Web 浏览器只会“看到”AWS,不知道 Tomcat 是否在幕后工作。 AWS 是 Web 浏览器客户端和 Tomcat 之间的中间人。如果单独使用 Tomcat,则 Tomcat 中的 Coyote 模块将代替 AWS 来处理来自 Web 浏览器客户端的请求。我推荐后者(仅 Tomcat),除非您知道自己有非常特殊的需求,AWS 可以更好地满足这些需求。
  • @BasilBourque 你的意思是 AHS(Apache HTTP 服务器)而不是 AWS?
【解决方案4】:

Tomcat 主要是一个应用程序服务器,它为您服务器上定制的 Java servlet 或 JSP 文件提供请求。它通常与 Apache HTTP 服务器一起使用(至少根据我的经验)。使用它来手动处理传入的请求。

HTTP 服务器本身最适合提供静态内容...html 文件、图像等。

【讨论】:

  • 我怀疑Tomcat is primarily an application server 声明。
  • tomcat 主要是意味着作为应用服务器。虽然它也确实服务器静态内容。
  • 是的 Tomcat 确实主要是一个应用程序服务器,如果该术语的意思是 Servlet 容器生成传递给 Web 浏览器的动态内容。作为最早的 Servlet 容器之一,这就是 Tomcat 存在的原因。
  • tomcat 不是应用服务器,它是 Web 服务器。 javajee.com/web-server-web-container-and-application-server
  • @PrateekMishra 根据您提供的链接,您关于 tomcat 是 Web 服务器 的说法不正确;它(主要)是一个 web 容器,也称为 servlet 容器
【解决方案5】:

apache 服务器是一个 http 服务器,可以服务任何简单的 http 请求,而 tomcat 服务器实际上是一个 servlet 容器,可以服务 java servlet 请求。

Web 服务器 [apache] 处理 Web 客户端(Web 浏览器)请求并将其转发给 servlet 容器 [tomcat],容器处理请求并将响应发送到 Web 服务器转发给 Web 客户端 [浏览器]。

您也可以查看此链接以获得更多说明:-

https://sites.google.com/site/sureshdevang/servlet-architecture

还请查看此答案以进行进一步研究:-

https://softwareengineering.stackexchange.com/a/221092

【讨论】:

【解决方案6】:

如果您使用 Java 技术(Servlet/JSP)来制作 Web 应用程序,您可能会使用 Apache Tomcat。 但是,如果您使用 Perl、PHP 或 ruby​​ 等其他技术,则使用 Apache HTTP Server 会更好(更容易)。

【讨论】:

  • 这个答案对我来说毫无意义。第一句话是错误的,因为除了 Tomcat 之外还有许多其他 Servlet/JSP 容器,其中一些非常流行,例如 Jetty、JBoss/Wildfly、Glassfish、WebSphere 等等。虽然很受欢迎,但 Tomcat 并不占主导地位,只占据了一小部分市场份额。至于第二句,Tomcat 经常被用作 Apache HTTP Server 背后的 Servlet 容器。而PHP等为often used with several other web Servers如Nginx、Lighttpd等。
  • 公平地说,我们使用 tomcat 专门为我们的服务器端软件提供服务(因为它都是基于 java 的),但由于 apache 的高级特性,我们在 apache 下运行它
  • ServletsJsps 是否也用于动态内容?由于 tomcat 和 apache http 服务器能够提供静态内容而不是动态内容。我对此@BasilBourque 知之甚少
【解决方案7】:

嗯,Apache 是 HTTP 网络服务器,而 Tomcat 也是 Servlet 和 JSP 的网络服务器。 此外,Apache 在实时方面优于 Apache Tomcat

【讨论】:

  • 这个问题很老了,你的答案似乎与很久以前发布的重复。感谢您的回答,但新的答案应该有助于增加对话。
【解决方案8】:

Apache 是一个 HTTP Web 服务器,用作 HTTP。

Apache Tomcat 是一个 java servlet 容器。它的功能与 Web 服务器相同,但经过定制以执行 java servlet 和 JSP 页面。

【讨论】:

  • 是的答案有点令人困惑,正如@Basil Bourque 上面所说的“Coyote 是 Tomcat 中负责 Web 服务的模块,Catalina 是执行 Servlet 的模块。Jasper 是处理 JSP 的模块”现在它清楚说明“TOMCAT FEATURES Same as web server customized to perform java servlet and JSP pages!!!!”
猜你喜欢
  • 2014-11-09
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多