Tomcat 真的是一个 Web 服务器吗?

问题描述

我正在学习应用服务器和网络服务器之间的区别,我读到了这些区别

  1. 在 Web 服务器中,不支持多线程。
  2. Web 服务器本身不支持事务或数据库连接池

实际上我的 java 应用程序部署在 Tomcat 服务器中,它实际上支持多线程、事务等。但我也读到 tomcat 是一个 Web 服务器。那么这怎么可能呢?

解决方法

从前,网络是静态的。这意味着网络服务器能够通过 http 从文件系统提供文件,就像 FTP 服务器通过 FTP 提供文件一样。动态化的第一个尝试是 CGI 脚本,这对小型项目有好处,但对于较大的项目,它们仍然会损害性能和代码维护。

替代方法之一是让网络服务器将请求转发到在别处/在其他进程中运行的应用程序。一个这样的例子是 JServ,它是第一个 servlet 容器。它能够运行 servlet,但不能提供静态文件。因此,您只能使用它来处理动态内容。

就这样:您有一个用于静态文件的网络服务器,以及一个用于处理动态内容的应用程序(服务器)。

没过多久,就有人创建了一个可以提供静态文件的 servlet - 然而,许多网站仍然做出区别,因为使用普通网络服务器提供静态文件会花费更少的资源。

今天的资源开销并不那么痛苦,因此您可以使用应用程序服务器来替代网络服务器。并且 Web 服务器通常在应用程序服务器之前使用,只是为了减少 Web 上的外观,从而减少可能的攻击向量。