GlassFish servlet容器是否使用了Apache Tomcat的catalina组件?
问题解答
观察正确性确认
你的观察完全正确,你在GlassFish中看到的org.apache.catalina开头的ServletConfig、ServletContext实现类确实来自Apache Tomcat的Catalina模块。
复用Catalina的核心原因
GlassFish在3.x及更早版本中,直接复用Tomcat的Catalina作为Web容器核心,没有自研Servlet实现,主要出于三点考量:
- 控制开发成本:Servlet规范的实现复杂度极高,需要覆盖HTTP协议解析、Servlet生命周期管理、类加载隔离、规范兼容性校验等大量复杂场景,Catalina是经过全球生产环境大规模验证的成熟实现,直接复用可节省大量从零开发的人力和时间投入。
- 保障规范兼容性:Tomcat本身就是Servlet、JSP规范的官方参考实现,对Java EE规范的符合度经过了广泛验证,复用Catalina可避免自研实现容易出现的规范兼容问题,也能降低应用在Tomcat和GlassFish之间迁移的适配成本。
- 降低长期维护成本:Catalina采用商业友好的Apache 2.0开源协议,GlassFish开发团队可直接参与上游社区贡献迭代,不需要独立维护一整套Servlet实现代码栈,大幅减少后续漏洞修复、版本升级的维护成本。
补充说明:从GlassFish 4.1版本开始,官方逐步切换到自研的Web容器实现,后续新版本的GlassFish中已经不会再出现Catalina相关的类。
对应运行截图


内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

