项目上最近要把内置的jetty换成tomcat, 来更好的支持servlet 3.0

本来以为换个容器, 几十行代码就好了. 实际上换了tomcat后, 一开始启动tomcat, 非常的慢.

jetty只要几秒就可以启动的web工程, 内嵌tomcat花了接近15s, 直接启动tomcat, 接近10s.

后来试了下, 删除了项目里的web.xml, 发现直接启动tomcat只要0.6s, 而内嵌tomcat居然要5s.

这就很奇怪了, 因为web工程里既没有WEB-INF/lib, 也没有web.xml, 这多出来的5s来源何处.

对比了直接启动和内嵌启动的日志, 发现有一些日志不一样.

org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
信息: No global web.xml found

把源码倒腾下来, 搜索No global web.xml found, debug进去看,

发现在ContextConfig中有个webConfig方法, 里面有个扫描jar里class,

匹配注解来加载fragments. 他会扫描WEB-INF/lib以及classpath, jdk路径下的jar来匹配需要的类.

就是这个导致内嵌的tomcat启动速度低于直接启动, 我们业务用不到, 注释掉后, 速度跟直接启动差不多了.

转载于:https://www.cnblogs.com/xdecode/p/8432997.html

内嵌tomcat启动速度慢相关推荐

  1. IDEA把Springboot打成可执行jar包,内嵌tomcat 这个可以用

    IDEA把Springboot打成可执行jar包,内嵌tomcat 2018年11月23日 18:36:30 ta山之石可以攻玉 阅读数 3061 版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  2. 实现内嵌tomcat

    内嵌tomcat的实现: 首先根据外部tomcat的配置和启动过程我们可以得到以下条件: web.xml: 1.配置Servlet 2.配置请求拦截 3.配置请求转发 ... ... tomcat一些 ...

  3. Springboot内嵌tomcat

    Springboot内嵌tomcat 前言 一.依赖引入starter-web 二.源码截图 tomcat 如何内嵌 三.springboot 如何启动tomcat 前言 一.依赖引入starter- ...

  4. 记一次定位解决SpringBoot中内嵌Tomcat的Bug问题

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 segmentfault.com/a/1190000038760707 推荐:h ...

  5. spring boot内嵌tomcat优雅的开启apr模式

    文章目录 简介 Win下开启APR Linux下开启APR 把lib打进jar包 简介 环境: jdk8.spring boot 2.3.4.RELEASE.centOS7.3.win7 在sprin ...

  6. 精尽Spring Boot源码分析 - 内嵌Tomcat容器的实现

    概述 我们知道 Spring Boot 能够创建独立的 Spring 应用,内部嵌入 Tomcat 容器(Jetty.Undertow),让我们的 jar 无需放入 Servlet 容器就能直接运行. ...

  7. 指定SpringBoot内嵌Tomcat的版本,修复(CVE-2021-42340)漏洞

    1.Tomcat漏洞 近日,Apache Tomcat 发布安全更新,更新了一处拒绝服务漏洞(CVE-2021-42340).攻击者可以通过该漏洞进行拒绝服务攻击.建议广大用户及时升级至最新版本. 1 ...

  8. SpringBoot内嵌Tomcat原理

    1.SpringBoot对SpringMVC的支持 对于一个 SpringBoot web 工程来说,一个主要的依赖标志就是有 spring-boot-starter-web 这个 starter , ...

  9. springboot内嵌tomcat调优

    在springboot-configuration-metadata.json文件下面,有很多属于springboot得喷子hi属性,以下为tomcat的默认配置属性: server.tomcat.a ...

最新文章

  1. Robotics Research Laboratory
  2. Securing Session State
  3. python写界面进度条程序_Python中如何写控制台进度条的整理
  4. SAP顾问,市场的双重需求
  5. 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享
  6. 基于html人事管理报告,基于C++builder的课程设计报告 (人事管理系统)
  7. javascript 图表_我如何使用JavaScript数据透视表和图表库分析开发人员趋势
  8. 程序设计与算法----递归之放苹果问题
  9. Request库入门
  10. java中list,set,map集合的区别,及面试要点
  11. linux下verilog功能验证,Verilog 条件语句介绍
  12. 分布式常见面试题总结(2021)
  13. 博客整理002-KICAD生成gerber板厂打不开的原因
  14. 浅析软文标题写作的三个问题
  15. VS2017安装WTL,解决创建WTL项目一直回弹问题
  16. 电商搜索里都有啥?详解闲鱼搜索系统(长文)
  17. 史上首例!阿里程序员写的代码,被国家博物馆收藏了!
  18. 修改SrollView嵌套下的整个layout背景色
  19. (转载)简述马尔可夫链
  20. npm插件开发-Vue插件

热门文章

  1. 从头写一个Cucumber测试(二) Cucumber Test
  2. 深度 | 伯克利教授Stuart Russell:人工智能基础概念与34个误区
  3. c++ 二维数组传递
  4. RMI原理一记远程调用
  5. linux下oracle中文乱码问题的解决
  6. 小括号教学设计导入_人教版一年级数学下教案 《小括号》教案
  7. pcb结构链表_简单说说链表和一个应用实例
  8. c#结合emgucv进行人脸检测_Python实时人脸识别/替换
  9. 企业号开发php,微信企业号-开发笔记-1
  10. angular将html导出为pdf,如何使用Angular进行转换:将HTML转换为PDF