tomcat是什么
Tomcat 是个跑 Java Web 应用的小容器。说“小”其实不太公平,它已经活了二十多年,至今仍是绝大多数 Java 开发者的默认选择。你写好的 Servlet、JSP,打包成 war 文件,扔进 Tomcat 的 webapps 目录,它就替你把这些 Java 代码变成能通过浏览器访问的网页。 我见过不少新手把 Tomcat 和 Java 本身搞混。他们以为装了 Tomcat 就等于装了 Java,其实完全两码事。Tomcat 自己也是用 Java 写的,它得跑在 JDK 之上。没有 JDK,Tomcat 就像没插电源的微波炉,看着是那么回事,摁了没反应。 Tomcat 的核心工作是处理 HTTP 请求。浏览器发来一个请求,Tomcat 的 Connector 组件负责接收,然后交给 Container 组件去找到对应的 Servlet 来处理,处理完再把结果原路返回。这个过程听起来简单,但里面牵扯到线程池、连接池、session 管理这些破事,Tomcat 全都替你扛了。你只需要关心业务逻辑,不用自己从头写一个 HTTP 服务器——那才是真正的灾难。 实际使用中有个常见误区:把 Tomcat 当生产环境的主力服务器。Tomcat 确实能扛住一定并发,但它本质上是 Servlet 容器,不是为高并发静态资源设计的。我见过一个团队,拿 Tomcat 直接对外服务,结果图片请求一多,CPU 直接飙到 90%。后来在前面加了个 Nginx 做静态资源代理,Tomcat 的负载瞬间降下来了。这不是 Tomcat 不行,是你用错了场景。 Tomcat 的目录结构值得琢磨。conf 目录里放着 server.xml,这是它的主配置文件,端口、虚拟主机、连接器参数都在这调。webapps 目录是部署目录,你丢进去的 war 包会自动解压。logs 目录记日志,排查问题第一站就是这。熟悉了这些,你基本就能玩转它了。 有一回我在生产环境调 Tomcat 的 JVM 参数,发现默认的堆内存只有 256MB,稍微跑点复杂的应用就频繁 Full GC。改成 -Xms512m -Xmx1024m 之后,整个世界清净了。这种经验你不踩坑根本不会注意,文档里写着,但没人会主动去看。 Tomcat 的版本迭代也值得说。9.x 开始支持 Servlet 4.0,加了 HTTP/2 支持。10.x 把包名从 javax.servlet 换成了 jakarta.servlet,这一步让很多老项目升级时骂娘。Oracle 把 Java EE 捐给 Eclipse 基金会后,命名空间全变了,Tomcat 只是被迫跟着改。这不是 Tomcat 的问题,是整个 Java 生态的历史遗留债。 你要是只想跑个简单的 REST API,Spring Boot 内置的 Tomcat 就够了,不用单独装。但要是你有多个应用要部署,或者想精细控制线程池、连接超时这些参数,独立安装的 Tomcat 更灵活。它不花哨,不炫技,就是个老老实实干活的工具。学它不需要什么高深理论,装上,扔个 war 包进去,跑起来,你就懂它是什么了。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-