Tomcat学习(一):启动过程(1)

目录

1. 启动入口

2.Bootstrap启动过程

2.1 Tomcat类加载器结构

2.2 Bootstrap的启动

3.Catalina的启动之Server的加载

3.1 server.xml的加载和解析

3.2 StandardServer的初始化

3.3 启动的后处理


以Tomcat 9.0.30为例,参考资料:《Tomcat架构解析》

1. 启动入口

一般使用Tomcat,都是运行 $CATALINA_BASE/bin/startup.sh(CATALINA_BASE指Tomcat根目录),所以先来看该脚本的主要内容:

# resolve links - $0 may be a softlink
PRG="$0"

while [ -h "$PRG" ] ; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

PRGDIR=`dirname "$PRG"`
EXECUTABLE=catalina.sh

# Check that target executable exists
if $os400; then
  # -x will Only work on the os400 if the files are:
  # 1. owned by the user
  # 2. owned by the PRIMARY group of the user
  # this will not work if the user belongs in secondary groups
  eval
else
  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
    echo "Cannot find $PRGDIR/$EXECUTABLE"
    echo "The file is absent or does not have execute permission"
    echo "This file is needed to run this program"
    exit 1
  fi
fi

其实就是根据命令,解析出startup.sh所在位置,然后拼出catalina.sh的路径,并且执行该脚本。catalina.sh很长,所以不贴内容了,该脚本的主要功能就是配置环境变量,然后拼接Java命令,大概长这样:

eval exec "\&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat是一个开源的Java Servlet容器,它实现了Servlet规范并提供了一个运行Java Web应用程序的环境。Tomcat的最新版本是Tomcat-9.0.0.M22,它支持Servlet 4.0和JSP 2.3,并提供了许多新特性。要运行Tomcat,您需要安装1.8或更高版本的JDK。\[1\] Tomcat的组件包括EndPoint、Processor、ProtocolHandler和Adapter。EndPoint是Coyote通信端点,负责监听通信端口并处理传输层的Socket接收和发送。Processor是Coyote协议处理接口,负责实现HTTP协议,它接收来自EndPoint的Socket,读取字节流并解析成Tomcat的Request和Response对象,然后通过Adapter将其提交给容器处理。ProtocolHandler是Coyote协议接口,通过EndPoint和Processor实现对具体协议的处理能力。Tomcat提供了6个不同的实现类来支持不同的协议和I/O模型。Adapter是适配器模式的经典应用,它将Tomcat的Request对象转换为标准的ServletRequest,然后调用容器进行处理。\[2\] Tomcat的Servlet容器是Catalina,它负责管理和执行Servlet的生命周期。在启动阶段,可以通过设置Catalina的await属性为true来监听SHUTDOWN命令。当收到该命令时,Tomcat会在主线程中执行Catalina的stop()方法来关闭服务器。默认情况下,SHUTDOWN命令监听的端口是8005。\[3\] 如果您想深入学习Tomcat,可以阅读Tomcat的官方文档和源代码,这将帮助您更好地理解Tomcat的内部工作原理和使用方法。您还可以参考一些Tomcat的教程和书籍,以获得更详细的学习资料和实践经验。 #### 引用[.reference_title] - *1* *3* [深入学习Tomcat 架构及启动过程](https://blog.csdn.net/J080624/article/details/86526494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Tomcat深入学习与理解(一)Tomcat系统架构与原理分析](https://blog.csdn.net/qq_37551917/article/details/119681753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值