zoukankan      html  css  js  c++  java
  • Tomcat中catalina.bat详解

    转载于:http://hi.baidu.com/xiaohuiq8/blog/item/09626fed5ecde12a63d09fcf.html

    因为上一篇博文已经解释过startup.bat文件内容了,这里就光挑一些重点语句解说下:
    1. if exist "%CATALINA_HOME%insetenv.bat" call "%CATALINA_HOME%insetenv.bat"
    如果存在setenv.bat,call之
    2. if exist "%CATALINA_HOME%insetclasspath.bat" goto okSetclasspath
    如果存在setclasspath.bat,跳转到okSetclasspath
    3. echo Cannot find %CATALINA_HOME%insetclasspath.bat
    4. goto end
    找不到setclasspath.bat,结束程序
    5. :okSetclasspath
    6. set BASEDIR=%CATALINA_HOME%
    BASEDIR环境变量是setclasspath.bat需要用到的变量,在调用之前我们提前把它设置好。
    7. call "%CATALINA_HOME%insetclasspath.bat" 
    顾名思义,setclasspath.bat就是用来设置环境变量的批处理文件,文件内容附在文章后
    8. set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%inootstrap.jar
    这是把CLASSPATH在原来的基础上增加了%CATALINA_HOME%inootstrap.jar。注意,此处的bootstrap.jar是Tomcat的内核,它同时用到了commons-daemon.jar和commons-logging-api.jar等jar包,但是我们并没有把它们包含在环境变量中,怎么找到的呢?其实这是通过在bootstrap.jar中的MANIFEST.MF设置的。
    接下又是设置一系列环境变量:
    9. if not "%CATALINA_BASE%" == "" goto gotBase
    10. set CATALINA_BASE=%CATALINA_HOME%
    11. :gotBase
    12. if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
    13. set CATALINA_TMPDIR=%CATALINA_BASE% emp
    14. :gotTmpdir
    接下来打印出各个环境变量:
    15. echo Using CATALINA_BASE:   %CATALINA_BASE%
    16. echo Using CATALINA_HOME:   %CATALINA_HOME%
    17. echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%
    18. echo Using JAVA_HOME:       %JAVA_HOME%
    19. set _EXECJAVA=%_RUNJAVA%
    _RUNJAVA这个环境变量是在setclasspath.bat中设置的。
    20. set MAINCLASS=org.apache.catalina.startup.Bootstrap
    设置启动类。
    21. set ACTION=start
    22. if ""%1"" == ""start"" goto doStart
    23. if ""%1"" == ""stop"" goto doStop
    24. :doStart
    25. if not "%OS%" == "Windows_NT" goto noTitle
    26. set _EXECJAVA=start "Tomcat" %_RUNJAVA%
    我们知道,在Windows系统的命令行中如果用start运行某个程序,就会启动一个新窗口,这里的"Tomcat"实际上就是为新窗口设置标题而已。
    27. goto gotTitle
    28. :noTitle
    29. set _EXECJAVA=start %_RUNJAVA%
    30. :gotTitle
    31. goto execCmd
    32. :doStop
    33. set ACTION=stop
    34. :execCmd
    接下来的语句貌似很复杂的样子,其实就是执行_EXECJAVA这个变量所指定的内容。
    35. %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
    36. :end


    技巧提示:
    将catllina.bat文件中的位于%_RUNJAVA%前面的start "Tomcat"部分删除后,就不会在启动一个新窗口,所以不会出现了错误还来不及看的时候新窗口就自动关闭了,因此在命令行窗口中执行startup.bat命令就可以查看到Tomcat启动失败时的提示信息。


    附:setclasspath.bat
    if not "%JAVA_HOME%" == "" goto gotJavaHome
    echo The JAVA_HOME environment variable is not defined
    goto end
    :gotJavaHome
    if not exist "%JAVA_HOME%injava.exe" goto noJavaHome
    goto okJavaHome
    :noJavaHome
    echo The JAVA_HOME environment variable is not defined correctly
    echo end
    :okJavaHome
    if not "%BASEDIR%" == "" goto gotBasedir
    echo The BASEDIR environment variable is not defined
    goto end
    :gotBasedir
    if exist "%BASEDIR%insetclasspath.bat" goto okBasedir
    echo The BASEDIR environment variable is not defined correctly
    goto end
    :okBasedir
    set JAVA_ENDORSED_DIRS=%BASEDIR%commonendorsed
    set CLASSPATH=%JAVA_HOME%lib ools.jar
    set _RUNJAVA="%JRE_HOME%injava"
    :end

  • 相关阅读:
    UML 2.5版本与UML分类概述
    Android 使用MySQL直接访问数据库
    带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变
    升级到Android Studio3.x遇到的问题及解决方案
    [摩斯密码表]摩斯密码对照表
    【Eclipse】eclipse中格式化代码配置方法
    Java中AWT、Swing与SWT三大GUI技术的原理与效率差异
    Mysql 5.5 replication 多数据库主从备份Master-Slave配置总结
    期望-pku-oj-1055:Tree
    MFC——从实现角度分析微云界面
  • 原文地址:https://www.cnblogs.com/lzhat/p/4366050.html
Copyright © 2011-2022 走看看