了解 catalina。sh 里的构造,对debug tomcat有决定性的作用。
// 获取 当前执行的脚本的名字
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
// 获取 catalina 的路径
PRGDIR=`dirname "$PRG"`
//设置 CATALINA_HOME路径
[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
# Copy CATALINA_BASE from CATALINA_HOME if not already set
[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
// 确认环境变量
if $cygwin; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
[ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
[ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`
[ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
// 设置 改变classpath中的东西
if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
. "$CATALINA_HOME"/bin/setclasspath.sh
else
echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
echo "This file is needed to run this program"
exit 1
fi
//追加 bootstrap.jar 到 CATALINA_HOME 中
if [ ! -z "$CLASSPATH" ] ; then
CLASSPATH="$CLASSPATH":
fi
CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
// 设置CATALINA_OUT 的路径
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
// 追加 jar包
if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar
else
CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar
fi
// 配置 log
if [ -z "$LOGGING_CONFIG" ]; then
if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
else
# Bugzilla 45585
LOGGING_CONFIG="-Dnop"
fi
fi
if [ -z "$LOGGING_MANAGER" ]; then
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
else
JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"
fi
// 重点讲解一下 当参数是 start的时候 也就是执行 start.sh 的那个脚本的时候 ,我们需要干的事情。
touch "$CATALINA_OUT"
if [ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi
shift
eval \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
-Djava.security.manager \
-Djava.security.policy==\"$CATALINA_BASE/conf/catalina.policy\" \
-Dcatalina.base=\"$CATALINA_BASE\" \
-Dcatalina.home=\"$CATALINA_HOME\" \
-Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
// 把所有的参数设置进去 然后执行 start参数
org.apache.catalina.startup.Bootstrap "$@" start \
// 把所有的东西写道 catalina.out中。
>> "$CATALINA_OUT" 2>&1 "&"
分享到:
相关推荐
《catalina.sh详解——深度剖析Tomcat启动脚本》 在Java Web开发领域,Tomcat作为一款广泛应用的开源Servlet容器,其启动、管理和监控离不开一个核心脚本——`catalina.sh`。这个脚本是Tomcat服务器的启动入口,...
《深入解析Tomcat 8.5.59》 Tomcat是Apache软件基金会下的一个开源项目,是一款广泛使用的Java Servlet容器,它实现了Java EE的Web应用程序规范。在本文中,我们将详细探讨Tomcat 8.5.59版本,这是Tomcat 8.x系列的...
#### Tomcat日志文件过大问题解析 1. **问题概述**: - `catalina.out`是Tomcat默认的日志文件。 - 随着时间的增长,此日志文件可能会变得非常大。 - 大型日志文件可能影响系统性能,并使日志分析变得困难。 2. ...
6. **bin**:包含启动和停止Tomcat的脚本,如catalina.sh/bat,startup.sh/bat,以及其它管理工具。 在深入源码之前,我们需要理解Tomcat的工作流程。当一个HTTP请求到达,Catalina会根据配置解析请求,然后通过...
在解压后的目录中,`bin` 目录包含了启动和停止Tomcat的脚本,如 `catalina.sh`(在Linux环境下)和 `startup.bat`(在Windows环境下)。`conf` 目录则包含了一系列配置文件,如 `server.xml`(定义服务器的全局配置...
此外,`catalina.sh`/`catalina.bat`脚本提供了更多控制选项,如以特定端口启动或附加JVM参数。 5. **JSP与Servlet**:Tomcat支持JSP和Servlet的生命周期,JSP会被编译成Servlet,然后由Tomcat执行。开发者可以利用...
5. **启动、停止和管理**:Apache Tomcat提供了一系列的脚本用于管理服务,如`bin/startup.sh`用于启动Tomcat,`bin/shutdown.sh`用于关闭Tomcat。这些脚本需要使用`sudo`权限执行。 6. **配置**:Tomcat的配置文件...
- **bin目录**:包含了启动和停止Tomcat的脚本,如`catalina.sh`(Unix/Linux)和`catalina.bat`(Windows)。 - **conf目录**:存储配置文件,如`server.xml`,用于定义服务器的全局配置。 - **lib目录**:包含...
首先,Apache Tomcat是基于Java的轻量级应用服务器,它的核心功能是解析并执行Java Servlets和JSPs。Servlet是一种Java编程语言的接口,用于扩展服务器的功能,而JSP则是一种用于创建动态网页的服务器端技术。Tomcat...
5. 启动Tomcat:`sudo $CATALINA_HOME/bin/startup.sh` 6. 访问Tomcat管理界面:打开浏览器,输入 `http://your_server_ip:8080`,如果Tomcat已成功启动,将看到默认的欢迎页面。 配置Tomcat时,我们可能需要修改`$...
还可以使用`bin/catalina.sh`脚本进行其他管理操作。 6. **部署应用程序**:将WAR文件放入`webapps`目录下,Tomcat会自动解压并运行应用程序。 7. **日志监控**:Tomcat的日志信息位于`logs`目录下,通过分析这些...
Tomcat作为Servlet容器,负责解析HTTP请求并调用相应的Servlet进行处理。 - JSP(JavaServer Pages)是与Servlet相辅相成的技术,允许开发者使用HTML语法来创建动态网页,同时嵌入Java代码。Tomcat可以将JSP页面...
5. **停止Tomcat**:运行`$CATALINA_HOME/bin/shutdown.sh`来关闭Tomcat服务。 除了基本操作,Apache Tomcat还支持许多高级特性,如集群、连接器配置、安全管理、JMX(Java Management Extensions)监控等。用户...
1. `bin`:包含启动和停止Tomcat的脚本,如`catalina.bat`(Windows下的批处理文件)、`startup.sh`(Unix/Linux的Shell脚本)以及其他管理和配置工具。 2. `conf`:存储所有配置文件,如`server.xml`定义了服务器的...
在启动过程中,Tomcat会加载并解析所有的配置文件,然后监听配置的端口,准备接受HTTP请求。 对于性能优化,Tomcat 7.0.105提供了许多选项。例如,可以通过调整"conf/server.xml"中的线程池设置,如maxThreads和...
2. **启动流程**:从`bin/startup.sh`或`bin/startup.bat`开始,调用`catalina.sh`或`catalina.bat`执行主类`org.apache.catalina.startup.Bootstrap`,启动Tomcat。 3. **生命周期管理**:Tomcat使用了Java的...
2. **bin**:包含启动和停止Tomcat的脚本,以及一些实用工具,如catalina.sh/bat、startup.sh/bat和shutdown.sh/bat。 3. **lib**:存放Tomcat运行时依赖的JAR文件,包括servlet-api.jar和其他Java EE相关库。 4. ...
1. **bin**: 包含可执行脚本,如`catalina.sh`(启动、停止和管理Tomcat的脚本)、`startup.sh`和`shutdown.sh`(分别用于启动和关闭Tomcat)。 2. **conf**: 存放配置文件,如`server.xml`(定义服务器配置,包括...
此外,`catalina.sh`或`catalina.bat`脚本提供命令行操作,如启动、停止和监控服务器。 5. **日志和诊断**:Tomcat提供了详细的日志记录功能,有助于调试和问题排查。通过调整日志配置,开发者可以获取所需级别的...
1. `bin`:包含了启动、停止Tomcat的脚本,如`catalina.sh`(Unix/Linux)或`catalina.bat`(Windows)。 2. `conf`:存放配置文件,如`server.xml`定义了服务器的配置,`tomcat-users.xml`管理Tomcat的用户权限。 3...