zoukankan      html  css  js  c++  java
  • 内嵌tomcat启动速度慢

    项目上最近要把内置的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启动速度低于直接启动, 我们业务用不到, 注释掉后, 速度跟直接启动差不多了.

  • 相关阅读:
    生成随机数
    ES集群开启X-pack认证
    部署ceph
    分布式存储ceph理论
    kvm虚拟机迁移
    kvm虚拟机网络管理
    kvm虚拟机存储管理
    机电传动控制个人课程报告
    第11周机电传动控制作业
    补充第九周手工画图
  • 原文地址:https://www.cnblogs.com/xdecode/p/8432997.html
Copyright © 2011-2022 走看看