catalina的启动过程
来源:互联网 发布:磊科nw336驱动 mac 编辑:程序博客网 时间:2024/06/06 12:30
实现类:
qualified name:org.apache.catalina.startup.Catalina
catalina的启动主要是调用了三个方法:
1、setAwait:设置服务启动之后是否进入等待状态,true则等待
2、load:加载配置文件config/server.xml,创建并初始化server
方法二:
1、判断server是否存在,如果不存在则调用load方法初始化server
2、调用server的start方法来启动服务器
3、注册关闭钩子,并根据await属性判断是否进入等待状态
4、进入等待状态会调用await方法和stop方法,await方法会直接调用server的await方法
server的await方法会内部执行一个while循环,当循环退出,就会执行stop方法从而关闭服务器。
qualified name:org.apache.catalina.startup.Catalina
catalina的启动主要是调用了三个方法:
1、setAwait:设置服务启动之后是否进入等待状态,true则等待
2、load:加载配置文件config/server.xml,创建并初始化server
3、start:启动服务器
方法一:
public void setAwait(boolean b) { this.await = b;}主要用来设置await属性,await属性会在start方法中的服务器启动完之后来判断是否进入等待状态
方法二:
public void load() { long t1 = System.nanoTime(); 省略创建server代码,使用Digester来创建 try { this.getServer().init(); } catch (LifecycleException var24) { if(Boolean.getBoolean("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE")) { throw new Error(var24); } log.error("Catalina.start", var24); } long t2 = System.nanoTime(); if(log.isInfoEnabled()) { log.info("Initialization processed in " + (t2 - t1) / 1000000L + " ms"); }}load方法是根据配置文件config/server.xml创建server对象,并赋值给server属性(通过Digester完成),然后调用init方法。
方法三:
public void start() { if(this.getServer() == null) { this.load(); } if(this.getServer() == null) { log.fatal("Cannot start server. Server instance is not configured."); } else { long t1 = System.nanoTime(); try { 调用server的start方法来启动服务器 this.getServer().start(); } catch (LifecycleException var7) { log.fatal(sm.getString("catalina.serverStartFail"), var7); try { this.getServer().destroy(); } catch (LifecycleException var6) { log.debug("destroy() failed for failed Server ", var6); } return; } long t2 = System.nanoTime(); if(log.isInfoEnabled()) { log.info("Server startup in " + (t2 - t1) / 1000000L + " ms"); } 注册关闭钩子 if(this.useShutdownHook) { if(this.shutdownHook == null) { this.shutdownHook = new Catalina.CatalinaShutdownHook(); } Runtime.getRuntime().addShutdownHook(this.shutdownHook); LogManager logManager = LogManager.getLogManager(); if(logManager instanceof ClassLoaderLogManager) { ((ClassLoaderLogManager)logManager).setUseShutdownHook(false); } } 进入等待状态 if(this.await) { this.await(); this.stop(); } }}catalina的start方法主要是调用了server的start方法来启动服务器,并根据await属性判断是否让程序进入等待状态。
1、判断server是否存在,如果不存在则调用load方法初始化server
2、调用server的start方法来启动服务器
3、注册关闭钩子,并根据await属性判断是否进入等待状态
4、进入等待状态会调用await方法和stop方法,await方法会直接调用server的await方法
server的await方法会内部执行一个while循环,当循环退出,就会执行stop方法从而关闭服务器。
阅读全文
0 0
- catalina的启动过程
- tomct启动过程 bootstrap catalina
- Tomcat启动脚本catalina.sh
- Tomcat启动脚本catalina.sh
- Tomcat启动脚本catalina.sh
- Tomcat启动脚本catalina.sh
- Tomcat启动脚本catalina.sh
- catalina.base和catalina.home的区别
- catalina.home和catalina.base 的区别
- catalina.base和catalina.home的区别
- org.apache.catalina.startup.Catalina start之过程分析
- Linux的启动过程
- jboss的启动过程
- uboot的启动过程
- symbian 的启动过程
- linux 的启动过程
- Linux的启动过程
- Android的启动过程
- Quartz中时间表达式的设置-----corn表达式
- 窗体部件之坐标和尺寸大小
- Java 7中的Try-with-resources
- 工作压力山大?码农这么减压最有效
- Android7.0中文文档(API)-- RemoteViews
- catalina的启动过程
- 前端书籍链接
- Java有哪些进阶技术?
- mysql mybatis 查询7天内 30天内的信息
- Fast R-CNN笔记
- 超时与重试机制(1)—《亿级流量》
- Java NIO系列教程(七) FileChannel
- c和c++混合使用
- Go实战--实现一个并发时钟服务器(The way to go)