内嵌tomcat启动速度慢
2024-10-13 23:35:32
项目上最近要把内置的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启动速度低于直接启动, 我们业务用不到, 注释掉后, 速度跟直接启动差不多了.
最新文章
- 利用WCF双工模式实现即时通讯
- 8天掌握EF的Code First开发之Entity Framework介绍
- Kosaraju 算法检测有向图的强连通性
- TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之一
- 总结-Hibernate
- php mysql实体字符
- PHP获取不了React Native Fecth参数的解决办法代码是怎样?
- requesting java ast from selection
- 怎样把function中的arguments变成普通数组
- js中的函数,Date对象,Math对象和数组对象
- 【转载】深度解析Android中字体设置
- 继承control的自定义TextBox
- 3种日志类型,微信付款反馈-->;写入txt日志
- This compilation unit is not on the build path SVN
- Oracle :多表更新多个字段
- JS数据交换的三种方式
- BZOJ1131 [POI2008]Sta 其他
- 改变checkbox的默认样式
- Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法
- Microsoft translater