tomcat是web服务器吗
Tomcat是web服务器吗?直接回答:是,但它远不止是web服务器。更准确地说,它是一个Servlet容器,只是顺带把静态文件也给你伺候了。这俩概念经常被搅浑,得掰扯清楚。 你去下载一个Tomcat,解压,扔进webapps一个HTML文件,启动,浏览器访问,能看见页面。这时候它干的就是纯web服务器的活儿——处理HTTP请求,返回静态资源。Apache httpd、Nginx干的也是这个。但你要是扔进去一个Servlet类或者JSP,Tomcat就不只是传文件了,它会帮你创建对象、管理生命周期、调用service方法、处理并发线程。这一步,普通web服务器做不了,它们只会把请求原封不动地转给后端程序,自己当个快递员。Tomcat不一样,它自己就是那个拆包裹、看说明书、动手组装的人。 我见过不少人把Tomcat和Apache混着说,其实早期很多项目是Apache在前,Tomcat在后,Apache处理静态文件,动态请求通过mod_jk或mod_proxy转发给Tomcat。后来Tomcat自己也把静态处理能力提上来了,小项目直接单跑Tomcat完全够用。但你要是做个图片站,几万张图让Tomcat慢慢吐,那性能就拉胯了,它毕竟不是为高并发静态内容设计的。这时候前面架个Nginx,静态的让Nginx来,动态的再反代给Tomcat,才是正经玩法。 Tomcat的“web服务器”身份,更像是它作为Servlet容器的副产物。你把它当web服务器用,能跑;你把它当应用服务器用,也行——它支持JNDI、JMX、数据库连接池这些企业级特性。但它没实现EJB全套规范,所以严格说它不是完整意义的Java EE应用服务器,像GlassFish、WildFly那种才算。轻量级是它的优势,也是它的边界。 有个细节能看出它的定位:Tomcat的启动脚本是catalina.sh,catalina是美国加州圣卡塔利娜岛的名字,据说是因为Tomcat的创始人喜欢那地方。这名字跟“服务器”没半点关系,倒像是给一个容器起的。它内部的核心组件是Catalina(Servlet容器)和Jasper(JSP引擎),一个管动态逻辑,一个管页面编译,静态资源处理反而是后加的。 所以下次有人问你这问题,你可以这么答:Tomcat是web服务器,但它是那种“顺便干干web服务器活”的容器。你拿它当个文件服务器使,有点大材小用;你拿它跑Servlet,它才真正舒展开。选型的时候别纠结它算哪类,就看你的请求是动态还是静态,动态多,Tomcat自己扛没问题;静态多,让专业的上。
-
上一篇
-
下一篇
- 随机阅读
- 搜索
-
- 友情链接
-