Tomcat启动一闪而过,tomcat启动原理初探(一)

前言:Tomcat一闪而过的原因有很多,千奇百怪、只有找对原因才能对症下药。博主粗略写几个我遇到的也是比较常见的。

  • 1、变异的项目出错了,但是一般项目出错你会大概看到在启动、然后闪退。啥也没看到的就闪过了估计就是tomcat的问题了。见到的情况比较少,如果有错,还望路过的大佬指正!
  • 2、环境变量配置错误。一般来说tomcat还是得配个环境变量的。名字叫做CATALINA_HOME。本人英语浇菜。这个老年机上面的Tomcat大三的时候配的了。当时手贱敲成了CATELINA_HOME,但是却是相安无事的用了这么多年。不知道是啥原因。前几天排除问题的时候说是环境变量得配对,不然也会一闪而过。才发现自己错了那么多年。
  • 3、端口占用、也是比较常见。直接查看端口使用记录,kill掉对应进程重启tomcat就ok了。
  • 4、Tomcat的启动配置文件错误或者丢失也会闪退。我就是这个。

!!!建议直接看catalina.out文件,看报了啥错,直接百度谷歌。下面半截都不用看了。哈哈

其实一般我们在编译工具里面启动都是会有日志的,可以直接查看,当我们用指令启动、或者windows下启动startup.bat, 不能直观地看到日志。当然最直接的就是看catalina.out查看启动日志定位错误的。

  • 当然也是奔着深入了解一下tomcat的启动原理,然后了解了一下,总结如下:文本编辑工具打开我们的startup.bat

Tomcat启动一闪而过,tomcat启动原理初探(一)_第1张图片

那我们就从砖野的角度来分析一下这个启动脚本,什么语言写的咱也别管。这通俗易懂的写法,反正我这个四级飘过的是看懂了。大概就是会先检查一下环境变量,然后启动对应的脚本。具体如下,一句一句挨着看吧,我就不带着你看了,下面是我的,自己看。

@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

rem ---------------------------------------------------------------------------
rem Start script for the CATALINA Server
rem ---------------------------------------------------------------------------

setlocal

rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"


if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"

:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome


set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec
echo Cannot find "%EXECUTABLE%"
echo This file is needed to run this program
goto end
:okExec

rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs

call "%EXECUTABLE%" start %CMD_LINE_ARGS%

:end


  • echo : 类似于log.xx()或者说System.out.print()。就是打日志。
  • pause : 顾名思义,暂停。两个配合使用就能一步步定位到底是哪一步出现了问题。

Tomcat启动一闪而过,tomcat启动原理初探(一)_第2张图片


启动看看是啥效果。可以看到的是Tomcat没有马上就启动,当然你到了这步说明你的环境啥的都没问题。如果连这儿都,都没到的话,那就挨着回去排查吧。


Tomcat启动一闪而过,tomcat启动原理初探(一)_第3张图片


好了。我们接着看。到这儿的话我们就来接着操作一下。改了保存然后重启。在这里加个暂停,不然报错了、都来不及看清,框就没了。查看打印出的内容。这样基本上就能定位出启动为啥闪退了。


Tomcat启动一闪而过,tomcat启动原理初探(一)_第4张图片


例如:这个是我的server.xml格式错误。我把host配置结尾删除了。这也会导致闪退。
Tomcat启动一闪而过,tomcat启动原理初探(一)_第5张图片


例如:这是我把conf里面的删了、也会导致闪退。


Tomcat启动一闪而过,tomcat启动原理初探(一)_第6张图片


总之、根据报错度娘谷歌,基本上都能找到问题。哈哈,本博客没啥实际价值,写来凑数!如有错误,望路过的大佬指正!手动滑稽~~~

你可能感兴趣的:(打Bug升级的程序猿,Java攻城狮的成长之路)