tomcat启动(设置catalina_home和不设置的区别)

原创 2016年05月31日 13:44:01

用于启动Tomcat的批处理文件startup.bat,在这个文件中,

1.首先判断CATALINA_HOME环境变量是否为空:

         (1)如果为空,就将当前目录设为CATALINA_HOME的值。

         (12)接着判断当前目录下是否存在bin\catalina.bat,如果文件不存在,将当前目录的父目录设为CATALINA_HOME的值。根据笔者机器上Tomcat安装目录的层次结构,最后CATALINA_HOME的值被设为Tomcat的安装目录。

          (2)如果环境变量CATALINA_HOME已经存在,则通过这个环境变量调用bin目录下的“catalina.bat start”命令。通过这段分析,我们了解到两个信息,一是Tomcat启动时,需要查找CATALINA_HOME这个环境变量,如果在Tomcat的bin目录下调用startup.bat,Tomcat会自动并正确设置CATALINA_HOME;二是执行startup.bat命令,实际上执行的是“catalina.bat start”命令。

 

如果我们不是在Tomcat的bin目录作为当前目录时调用startup.bat,就会出现如下图所示的错误信息(在bin目录的父目录下调用除外)。

 技术分享

图    在其他目录下启动Tomcat出错

如果要想在任意目录下都能启动Tomcat,就需要设置CATALINA_HOME环境变量,你可以将CATALINA_HOME添加到Windows XP系统的环境变量中,其值就是Tomcat的安装目录。在笔者的机器上,Tomcat的安装目录是D:\apache-tomcat-6.0.36-windows-x86\apache-tomcat-6.0.36。添加CATALINA_HOME环境变量的过程和前述添加JAVA_HOME环境变量的过程是一样的。如果你不想在系统的环境变量中添加,也可以直接在startup.bat文件中进行设置。下面是在startup.bat文件中设置CATALINA_HOME后的文件片段:

 

 

rem $Id: startup.bat 908749 2010-02-10 23:26:42Z markt $
rem ---------------------------------------------------------------------------

set CATALINA_HOME=D:\apache-tomcat-6.0.36-windows-x86\apache-tomcat-6.0.36

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 ..

...

注意以粗体显示的这句代码的作用就是设置CATALINA_HOME环境变量,在它的下面是判断CATALINA_HOME是否为空的语句。如果找不准位置,干脆将设置CATALINA_HOME环境变量的这句代码放到文件的第一行。JAVA_HOME环境变量也可以采用同样的方式进行设置。不过,如果要在其他目录下利用shutdown.bat来关闭Tomcat服务器,则需要在shutdown.bat文件中设置CATALINA_HOME和JAVA_HOME这两个环境变量,设置变量的位置和startup.bat文件一样,都是在判断CATALINA_HOME是否为空之前。当然,为了一劳永逸,避免重装Tomcat后还要进行设置(需要是同一版本的Tomcat安装在同一位置),我们最好还是将CATALINA_HOME和JAVA_HOME这两个环境变量添加到Windows XP系统的环境变量中。

 

有的读者可能会对Tomcat安装目录的环境变量的名字是CATALINA_HOME而感到奇怪,按照其他环境变量的设置来看,JAVA_HOME表示JDK的安装目录,那么应该用TOMCAT_HOME来表示Tomcat的安装目录,可为什么要使用CATALINA_HOME呢?实际上,在Tomcat 4以前,用的就是TOMCAT_HOME来表示Tomcat的安装目录,在Tomcat 4以后,采用了新的Servlet容器Catalina,所以环境变量的名字也改为了CATALINA_HOME。

在Windows系统下环境变量的名字是与大小写无关的,也就是说,JAVA_HOME和java_home是一样的。

 

了解了startup.bat文件以后,我们再来看看真正负责启动Tomcat服务器的catalina.bat文件。通过分析catalina.bat文件,我们发现它还调用了一个文件setclasspath.bat。在setclasspath.bat文件中,它检查JAVA_HOME环境变量是否存在,并通过JAVA_HOME环境变量,找到java.exe,用于启动Tomcat。在这个文件中,还设置了其他的一些变量,代表调用Java的标准命令,有兴趣的读者可以自行分析一下这个文件。在执行完setclasspath.bat之后,catalina.bat剩下的部分就开始了Tomcat服务器的启动进程。

 

直接执行catalina.bat时,需要带上命令行的参数。读者可以在命令提示符窗口下,执行catalina.bat,就会打印出catalina.bat命令的各种参数及其含义,如下图所示。

技术分享

(点击查看大图)图     catalina.bat的各参数信息

 

其中常用的参数是start、run和stop。参数start表示在一个单独的窗口中启动Tomcat服务器,参数run表示在当前窗口中启动Tomcat服务器;参数stop表示关闭Tomcat服务器。我们执行startup.bat,实际上执行的就是“catalina.bat start”命令;执行shutdown.bat,实际上执行的是“catalina.bat stop”命令。“catalina.bat run”命令有时候是非常有用的,特别是当我们需要查看Tomcat的出错信息时。

 

在开发JSP程序时,经常会碰到自己机器上的8080端口号被别的应用程序占用,或者在配置server.xml时出现错误,当通过startup.bat(相当于执行“catalina.bat start”)启动Tomcat服务器时,如果启动过程中出现严重错误,由于是在单独的窗口中启动Tomcat服务器,所以一旦启动失败,命令提示符窗口就自动关闭了,程序运行中输出的出错信息也随之消失,而且没有任何的日志信息,这就使得我们没有办法找出错误原因。当出现错误时,我们可以换成“catalina.bat run”命令再次启动,一旦启动失败,仅仅是Tomcat服务器异常终止,但是在当前的命令提示符窗口下仍然保留了启动时的出错信息,这样我们就可以查找启动失败的原因了。



在一个机器上启动多个tomcat:

(1)未设置环境变量,只需要将tomcat目录中的server.xml中的端口号修改,分别启动tomcat即可

 (2)设置环境变量,则除了修改server.xm文件中的端口号之外,还需要进行环境变量的配置,同时对相应文件中的变量名进行修改

总结:

       tomcat启动的时候,会先去找catalina_home,如果未将其配置成环境变量,则将当前目录置为catalina_home的值;如果设置了环境变量,则直接去境变量对应的目录中去执行startup.bat文件。

       如果同一台电脑上启动多个tomcat,在环境变量中只配置了一个,则会出现端口占用的错误,解决办法:每个tomcat的目录都配置环境变量,或者都不设置环境变量

版权声明:本文为博主原创文章,未经博主允许不得转载。

Tomcat启动过程中找不到JAVA_HOME解决方法

在XP上明明已经安装了JDK1.5并设置好了JAVA_HOME,可偏偏Tomcat在启动过程中找不到。    报错信息如下:Neither the JAVA_HOME nor the JRE_HOME...
  • silyvin
  • silyvin
  • 2016年06月29日 17:59
  • 6110

Tomcat启动过程中找不到JAVA_HOME解决方法

Run Environment: os: win7 jdk: 1.7.0_79 tomcat: apache-tomcat-8.0.29-windows-x86(绿色版)在win7上明明已...
  • limuzi13
  • limuzi13
  • 2016年10月14日 15:23
  • 2228

Tomcat启动过程中找不到JAVA_HOME解决方法

Tomcat启动过程中找不到JAVA_HOME解决方法    在XP上明明已经安装了JDK1.7并设置好了JAVA_HOME,可偏偏Tomcat在启动过程中找不到。    报错信息如下:Neith...
  • dunegao
  • dunegao
  • 2017年06月26日 17:10
  • 1231

Tomcat环境变量Catalina_Home配置

1、CATALINA_HOME是TOMCAT安装路径的别名,目的是为了方便使用TOMCAT 2、计算机>属性>环境变量, 新建环境变量。变量名为CATALINA_HOME ,变量值tomcat的...
  • henulwj
  • henulwj
  • 2013年05月22日 18:51
  • 31286

tomcat 不用设置CATALINA_HOME环境变量

tomcat 不用设置CATALINA_HOME环境变量
  • u013803262
  • u013803262
  • 2017年04月23日 13:00
  • 3236

Tomcat解惑 之 CATALINA_HOME与CATALINA_BASE

看Tomcat源码一段时间一直很好奇为什么有CATALINA_HOME和CATALINA_BASE区别: 分CATALINA_HOME和CATALINA_BASE概念是为了解决这样的场景: 你需要...
  • jiaotuwoaini
  • jiaotuwoaini
  • 2016年05月19日 17:52
  • 10421

Tomcat也要配置环境变量catalina_home吗?

认识tomcat这么久,真心不太清楚环境变量这么一说,由于最近老是部署项目,对tomcat的认识又是深了一步。        问题背景是这样的,        我在我自己的笔记本上重新拷贝一下需要...
  • u012788601
  • u012788601
  • 2016年08月21日 20:16
  • 2326

tomcat无法成功打开,因为设置catalina_home的时候在最后加了“;”符号

关于tomcat startup.bat启动后一闪而过的问题(转)   2010-07-28 13:33:37|  分类: 技术 |  标签:tomcat  bat  startup  启动 ...
  • luxy622
  • luxy622
  • 2012年03月27日 23:28
  • 12808

为jboss设置JBOSS_HOME系统变量

Ejb得运行环境!1.启动JBoss 进入jboss的bin目录,找到启动脚本run.bat 。双击run.bat即可启动jboss,此时启动的配置项为default。 如果启动出错,请检查下列情况:...
  • zhchzh1000
  • zhchzh1000
  • 2009年10月25日 22:09
  • 4815

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

原文地址:http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html 用文本编辑工具打开用于启动Tomcat的批...
  • u010644448
  • u010644448
  • 2016年07月04日 12:46
  • 2810
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tomcat启动(设置catalina_home和不设置的区别)
举报原因:
原因补充:

(最多只允许输入30个字)