Catalina的start方法

  1. /**
  2. * Start a new server instance.
  3. */
  4. public void start() {
  5.  
  6. if (server == null) {
  7. load();
  8. }
  9.  
  10. long t1 = System.nanoTime();
  11.  
  12. // Start the new server
  13. if (server instanceof Lifecycle) {
  14. try {
  15. ((Lifecycle) server).start();//启动Server
  16. } catch (LifecycleException e) {
  17. log.error("Catalina.start: ", e);
  18. }
  19. }
  20.  
  21. long t2 = System.nanoTime();
  22. if(log.isInfoEnabled())
  23. log.info("Server startup in " + ((t2 - t1) / 1000000) + " ms");
  24.  
  25. try {
  26. // Register shutdown hook
  27. if (useShutdownHook) {
  28. if (shutdownHook == null) {
  29. shutdownHook = new CatalinaShutdownHook();
  30. }
  31. Runtime.getRuntime().addShutdownHook(shutdownHook);
  32. }
  33. } catch (Throwable t) {
  34. // This will fail on JDK 1.2. Ignoring, as Tomcat can run
  35. // fine without the shutdown hook.
  36. }
  37. //启动完成 等待客户端连接
  38. if (await) {
  39. await();
  40. stop();
  41. }
  42.  
  43. }

启动server的时候启动service。

  1. public void start() throws LifecycleException {
  2.  
  3. // Validate and update our current component state
  4. if (started) {
  5. log.debug(sm.getString("standardServer.start.started"));
  6. return;
  7. }
  8.  
  9. // Notify our interested LifecycleListeners
  10. lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);
  11.  
  12. lifecycle.fireLifecycleEvent(START_EVENT, null);
  13. started = true;
  14.  
  15. // Start our defined Services
  16. synchronized (services) {
  17. for (int i = 0; i < services.length; i++) {
  18. if (services[i] instanceof Lifecycle)
  19. ((Lifecycle) services[i]).start();//启动service
  20. }
  21. }
  22.  
  23. // Notify our interested LifecycleListeners
  24. lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);
  25.  
  26. }

tomcat容器启动的启动过程(三)的更多相关文章

  1. 精尽Spring Boot源码分析 - 支持外部 Tomcat 容器的实现

    该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...

  2. Tomcat源码分析三:Tomcat启动加载过程(一)的源码解析

    Tomcat启动加载过程(一)的源码解析 今天,我将分享用源码的方式讲解Tomcat启动的加载过程,关于Tomcat的架构请参阅<Tomcat源码分析二:先看看Tomcat的整体架构>一文 ...

  3. tomcat 组件研究一--启动过程总结

    作为java 开发者,从开始学习java 便知道tomcat 这个容器了,但是一直却没有怎么研究过它的内部结构,以前对tomcat的认识也仅仅局限在那几个常用的目录放什么东西,那几个常用的配置文件应该 ...

  4. 启动Tomcat一闪而过——分析及解决过程

    启动Tomcat一闪而过--分析及解决过程 嗯,昨天将有关JDK的知识稍微整理了一下,现在稍微整理一下有关Tomcat的! 1:Tomcat是什么? Tomcat是当今世界上使用最为广泛的.开源免费的 ...

  5. AngularJS进阶(三十九)基于项目实战解析ng启动加载过程

    基于项目实战解析ng启动加载过程 前言 在AngularJS项目开发过程中,自己将遇到的问题进行了整理.回过头来总结一下angular的启动过程. 下面以实际项目为例进行简要讲解. 1.载入ng库 2 ...

  6. ZABBIX Proxy容器启动的配置过程

    ZABBIX Proxy容器启动的配置过程 环境介绍 版本 zabbix6 zabbix server 与 zabbix proxy 非同一台主机,zabbix proxy为主动方式提交给server ...

  7. SpringBoot从Eclipse添加的Tomcat容器中启动

    SpringBoot的Web项目,想要在Eclipse中的Tomcat容器中启动运行需要做下面这两处改动 pom.xml <packaging>war</packaging> ...

  8. 多个Spring Boot项目部署在一个Tomcat容器无法启动

    转自https://www.cnblogs.com/tomxin7/p/9434085.html 业务介绍 最近用Spring Boot开发了一个翻译的小项目,但是服务器上还跑着其他项目,包括一个同样 ...

  9. docker相关----解决tomcat容器启动成功,无法访问的问题

    使用docker安装了tomcat镜像,默认为latest最新的(8.5.50版本),依据tomcat镜像创建容器并同时做了端口映射 命令为:docker run --name tomcat01 -d ...

  10. TOMCAT源码分析(启动框架)

    建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的. 所以得实践.实践.再实践. 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动 ...

随机推荐

  1. Hybrid App(二)Cordova+android入门

    上一篇介绍了app开发如何选型,由于公司人员组织结构的原因(app native较少,每个月一次迭代),因此选型hybrid app. 接下来说一下环境搭建: 一.Java环境 (1)安装jdk (2 ...

  2. 使用python修改QQ密保(脚本)

    一.基于以下目的: 1.为了增加对Http协议理解能力,对QQ密保修改的请求进行了分析 2.为了锻炼python的编写能力 3.对web综合知识的理解 花了点时间写了这个脚本,下面介绍脚本的过程 二. ...

  3. @classmethod及@staticmethod方法浅析【python】

    目前对于python中@classmethod 类方法和@staticmethod静态方法的有了一定的认识,之后有进一步的认识后继续记录. @classmethod :是和一个class类相关的方法, ...

  4. linux安装GraphicsMagick

    下载GraphicsMagick-1.3.21.tar.gz 解压:tar -zxvf GraphicsMagick-1.3.21.tar.gz cd /usr/local/GraphicsMagic ...

  5. layout布局

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. centos6.5 安装ansible,管理多台服务器

    安装python(最低2.6v) (1).python2.7安装 wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz # tar ...

  7. lumen框架

    1,获取配置 app(); 说明:app()返回的是全局唯一的application对象,该对象的原型是Laravel\Lumen\Application 加载配置文件(config/app.php) ...

  8. 动态Order by

    ),) set @order='' ' select * from T_Table order by then ID end desc, then CreateTime end desc

  9. open("","r")与open("","rb")的效率区别

    fd = open("C:\Users\william\Desktop\dup_file - Copy (3).txt","r")for i in fd: pr ...

  10. 更换jdk版本:jdk1.8更换为jdk1.7之后输入java -version还是出现1.8的版本号

    安装了1.7之后修改了JAVA_HOME的环境变量 修改成功之后,在cmd输入java -verson还是出现1.8的版本号 解决办法:将环境变量Path中的%JAVA_HOME%/bin 移到最前面 ...