加入收藏 | 设为首页 | 会员中心 | 我要投稿 十堰站长网 (https://www.0719zz.com/)- 混合云存储、网络、视频终端、云计算、媒体处理!
当前位置: 首页 > 运营中心 > Tomcat > 正文

浅析Tomcat的工作原理

发布时间:2023-02-20 10:53:15 所属栏目:Tomcat 来源:互联网
导读:SpringBoot 就像一条巨蟒,慢慢缠绕着我们,使我们麻痹。不得不承认,使用了 SpringBoot 确实提高了工作效率,但同时也让我们遗忘了很多技能。刚入社会的时候,我还是通过 Tomcat 手动部署 JavaWeb 项目,还经常对 Tomcat 进行性能调优。除此之外,还需要自

  this.onRefresh();
  this.registerListeners();
  this.finishBeanFactoryInitialization(beanFactory);
  this.finishRefresh();
  从 onRefresh 方法点进去,找到 ServletWebServerApplicationContext 的实现方法。在这里终于看到了希望。
 
 
  protected void onRefresh() {
   super.onRefresh();
  
   try {
   this.createWebServer();
   } catch (Throwable var2) {
   throw new ApplicationContextException("Unable to start web server", var2);
   }
  }
  从 createWebServer 方法点进去,找到从工厂类中获取 WebServer的代码。
 

  if (webServer == null && servletContext == null) {
   ServletWebServerFactory factory = this.getWebServerFactory();
   // 获取 web server
   this.webServer = factory.getWebServer(new ServletContextInitializer[]{this.getSelfInitializer()});
  } else if (servletContext != null) {
   try {
   // 启动 web server
   this.getSelfInitializer().onStartup(servletContext);
   } catch (ServletException var4) {
   throw new ApplicationContextException("Cannot initialize servlet context", var4);
   }
  }
  从 getWebServer 方法点进去,找到 TomcatServletWebServerFactory 的实现方法,与之对应的还有 Jetty 和 Undertow。这里配置了基本的连接器、引擎、虚拟站点等配置。
 
  public WebServer getWebServer(ServletContextInitializer... initializers) {
   Tomcat tomcat = new Tomcat();
   File baseDir = this.baseDirectory != null ? this.baseDirectory : this.createTempDir("tomcat");
   tomcat.setBaseDir(baseDir.getAbsolutePath());
   Connector connector = new Connector(this.protocol);
   tomcat.getService().addConnector(connector);
   this.customizeConnector(connector);
   tomcat.setConnector(connector);
   tomcat.getHost().setAutoDeploy(false);
   this.configureEngine(tomcat.getEngine());
   Iterator var5 = this.additionalTomcatConnectors.iterator();
  
   while(var5.hasNext()) {
   Connector additionalConnector = (Connector)var5.next();
   tomcat.getService().addConnector(additionalConnector);
   }
  
   this.prepareContext(tomcat.getHost(), initializers);
   return this.getTomcatWebServer(tomcat);
  }
 
 
  服务启动后会打印日志
 
  o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8900 (http)
  o.apache.catalina.core.StandardService : Starting service [Tomcat]
  org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.34
  o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal ...
  o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
  o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 16858 ms

(编辑:十堰站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读