精华内容
下载资源
问答
  • jdk1.7附加tomcat1.7

    2019-01-17 14:55:09
    jdk1.7版本附加tomcat1.7,便于java开发人员进行Java开发
  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
  • tomcat-ant-1.7.1官网下载

    2015-08-31 17:06:16
    Ant是一种基于Java的build工具。理论上来说,它有些类似于(Unix)C中的make ,但没有make的缺陷。目前的最新版本为:Ant 1.9.4[1] 。
  • 1. tomcat1.7目录: tomcat1.7  |---bin:存放启动和关闭tomcat脚本,按支持windows的.bat和linux的.sh文件各式一份; |---conf:存放不同的配置文件(server.xml和web.xml);  |---lib:存放Tomcat运行需要...

    六年老程序员了,coding 起来依然很欢乐.....

    2020年4月  都在赶工加班,今天忙里偷闲,看下tomcat 源码,一丢丢认识,提笔记录下来;

     

    特意搜索了tomcat的出处:

    Tomcat的这个单词的意思是“公猫”,
    因为它的开发者姆斯·邓肯·戴维森希望用一种能够自己照顾自己的动物代表这个软件,于是命名为tomcat,
    它的Logo兼吉祥物也被设计成了一只公猫形象。
    • tomcat1.7 目录:

     tomcat1.7
      |---bin          :存放启动和关闭tomcat脚本,按支持windows的.bat和linux的.sh文件各式一份;
        |---conf         :存放不同的配置文件(server.xml和web.xml);
      |---lib          :存放Tomcat运行需要依赖文件(JARS),因为tomcat本身是Java项目;
      |---logs         :存放Tomcat执行时的日志文件;
      |---webapps      :Tomcat的Web项目主要发布目录,也可以使用其他方式,如配置虚拟项目路径;
      |---work         :存放jsp编译后产生的class文件;

     

    2. bin文件夹:

    2.1 startup.bat启动文件:

    该脚本文件的核心功能是判断环境变量是不是设置完备;条件完备的情况下,call()方法会调用同目录下的catalina.bat文件;

    ​
    @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 判断CATALINA_HOME是不是已经完整配置
    set "CURRENT_DIR=%cd%"
    rem CATALINA_HOME设置的话,代码直接到gotHome处
    if not "%CATALINA_HOME%" == "" goto gotHome
    rem 
    set "CATALINA_HOME=%CURRENT_DIR%"
    rem 
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    cd ..
    set "CATALINA_HOME=%cd%"
    cd "%CURRENT_DIR%"
    :gotHome
    
    rem 判断CATALINA_HOME bin\catalina.bat的文件是不是存在 ,有到okHome处
    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
    rem  没有文件的话,打印上面两行,程序结束
    goto end
    :okHome
    
    rem 设置要执行的文件
    set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
    
    rem Check that target executable exists 执行文件存在 代码走到okExec
    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
    rem 设置启动参数
    set CMD_LINE_ARGS=
    :setArgs
    if ""%1""=="""" goto doneSetArgs
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto setArgs
    :doneSetArgs
    
    rem 启动catalina.bat文件
    call "%EXECUTABLE%" start %CMD_LINE_ARGS%
    
    rem 代码结束
    :end
    
    ​

    2.1  catalina.bat文件:

    命名出处:

    Catalina是美国西海岸靠近洛杉矶22英里的一个小岛。Servlet运行模块的最早开发者Craig McClanahan因为喜欢Catalina岛故以Catalina命名他所开这个模块,尽管他从来也没有去过那里。
    
    另外在开发的早期阶段,Tomcat是被搭建在一个叫Avalon的服务器框架上,而Avalon则是Catalina岛上的一个小镇的名字,于是想一个与小镇名字相关联的单词也是自然而然。还有一个原因来自于Craig McClanahan养的猫,他养的猫在他写程序的时候喜欢在电脑周围闲逛。
    
    也可能是Catalina岛是个悠闲散步的好地方,猫的闲逛让Craig McClanahan想起了那里。

    该文件的核心功能是在org.apache.catalina.startup.Bootstrap启动前,将相关的功能调动起来。比如Java运行环境(JRE),准备JVM,日志功能,catalina.policy文件等;

    较常用的设置是在该文件中配置自定义的JVM内存区的大小;

    例如:

    set JAVA_OPTS=-server -Xms512m -Xmx1524m -XX:MaxNewSize=1024m -XX:MaxPermSize=256m 

    完整文件内容如下:

    @echo off
    rem 自定义JVM各内存区大小
    set JAVA_OPTS=-server -Xms512m -Xmx1524m -XX:MaxNewSize=1024m -XX:MaxPermSize=256m 
    
    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/Stop Script for the CATALINA Server
    rem
    rem Environment Variable Prerequisites
    rem
    rem   Do not set the variables in this script. Instead put them into a script
    rem   setenv.bat in CATALINA_BASE/bin to keep your customizations separate.
    rem
    rem   WHEN RUNNING TOMCAT AS A WINDOWS SERVICE:
    rem   Note that the environment variables that affect the behavior of this
    rem   script will have no effect at all on Windows Services. As such, any
    rem   local customizations made in a CATALINA_BASE/bin/setenv.bat script
    rem   will also have no effect on Tomcat when launched as a Windows Service.
    rem   The configuration that controls Windows Services is stored in the Windows
    rem   Registry, and is most conveniently maintained using the "tomcatXw.exe"
    rem   maintenance utility, where "X" is the major version of Tomcat you are
    rem   running.
    rem
    rem   CATALINA_HOME   May point at your Catalina "build" directory.
    rem
    rem   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
    rem                   of a Catalina installation.  If not present, resolves to
    rem                   the same directory that CATALINA_HOME points to.
    rem
    rem   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
    rem                   "run" or "debug" command is executed.
    rem                   Include here and not in JAVA_OPTS all options, that should
    rem                   only be used by Tomcat itself, not by the stop process,
    rem                   the version command etc.
    rem                   Examples are heap size, GC logging, JMX ports etc.
    rem
    rem   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
    rem                   the JVM should use (java.io.tmpdir).  Defaults to
    rem                   %CATALINA_BASE%\temp.
    rem
    rem   JAVA_HOME       Must point at your Java Development Kit installation.
    rem                   Required to run the with the "debug" argument.
    rem
    rem   JRE_HOME        Must point at your Java Runtime installation.
    rem                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
    rem                   are both set, JRE_HOME is used.
    rem
    rem   JAVA_OPTS       (Optional) Java runtime options used when any command
    rem                   is executed.
    rem                   Include here and not in CATALINA_OPTS all options, that
    rem                   should be used by Tomcat and also by the stop process,
    rem                   the version command etc.
    rem                   Most options should go into CATALINA_OPTS.
    rem
    rem   JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories
    rem                   containing some jars in order to allow replacement of APIs
    rem                   created outside of the JCP (i.e. DOM and SAX from W3C).
    rem                   It can also be used to update the XML parser implementation.
    rem                   Defaults to $CATALINA_HOME/endorsed.
    rem
    rem   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"
    rem                   command is executed. The default is "dt_socket".
    rem
    rem   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"
    rem                   command is executed. The default is 8000.
    rem
    rem   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"
    rem                   command is executed. Specifies whether JVM should suspend
    rem                   execution immediately after startup. Default is "n".
    rem
    rem   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"
    rem                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
    rem                   and JPDA_SUSPEND are ignored. Thus, all required jpda
    rem                   options MUST be specified. The default is:
    rem
    rem                   -agentlib:jdwp=transport=%JPDA_TRANSPORT%,
    rem                       address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
    rem
    rem   JSSE_OPTS       (Optional) Java runtime options used to control the TLS
    rem                   implementation when JSSE is used. Default is:
    rem                   "-Djdk.tls.ephemeralDHKeySize=2048"
    rem
    rem   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file
    rem                   Example (all one line)
    rem                   set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"
    rem
    rem   LOGGING_MANAGER (Optional) Override Tomcat's logging manager
    rem                   Example (all one line)
    rem                   set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
    rem
    rem   TITLE           (Optional) Specify the title of Tomcat window. The default
    rem                   TITLE is Tomcat if it's not specified.
    rem                   Example (all one line)
    rem                   set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]
    rem ---------------------------------------------------------------------------
    
    setlocal
    
    rem Suppress Terminate batch job on CTRL+C
    if not ""%1"" == ""run"" goto mainEntry
    if "%TEMP%" == "" goto mainEntry
    if exist "%TEMP%\%~nx0.run" goto mainEntry
    echo Y>"%TEMP%\%~nx0.run"
    if not exist "%TEMP%\%~nx0.run" goto mainEntry
    echo Y>"%TEMP%\%~nx0.Y"
    call "%~f0" %* <"%TEMP%\%~nx0.Y"
    rem Use provided errorlevel
    set RETVAL=%ERRORLEVEL%
    del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1
    exit /B %RETVAL%
    :mainEntry
    del /Q "%TEMP%\%~nx0.run" >NUL 2>&1
    
    rem Guess CATALINA_HOME if not defined  再次判断CATALINA_HOME是不是已经设置
    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
    
    rem 以上代码和startup.bat内容很相似
    
    rem Copy CATALINA_BASE from CATALINA_HOME if not defined ,没有设置CATALINA_BASE的情况下,将CATALINA_HOME赋值给CATALINA_BASE
    if not "%CATALINA_BASE%" == "" goto gotBase
    set "CATALINA_BASE=%CATALINA_HOME%"
    :gotBase
    
    rem Ensure that any user defined CLASSPATH variables are not used on startup,
    rem but allow them to be specified in setenv.bat, in rare case when it is needed.
    set CLASSPATH=
    
    rem Get standard environment variables 我们在tomcat1.7下bin目录中不存在setenv.bat
    if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
    call "%CATALINA_BASE%\bin\setenv.bat"
    goto setenvDone
    :checkSetenvHome
    if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
    :setenvDone
    
    rem Get standard Java environment variables 启动Java 设置环境变量,运行Java.exe等
    if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
    echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
    echo This file is needed to run this program
    goto end
    :okSetclasspath
    call "%CATALINA_HOME%\bin\setclasspath.bat" %1
    if errorlevel 1 goto end
    
    rem Add on extra jar file to CLASSPATH
    rem Note that there are no quotes as we do not want to introduce random
    rem quotes into the CLASSPATH   设置tomcat的类路径bootstrap.jar
    if "%CLASSPATH%" == "" goto emptyClasspath
    set "CLASSPATH=%CLASSPATH%;"
    :emptyClasspath
    set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"
    
    if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
    set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"
    :gotTmpdir
    
    rem Add tomcat-juli.jar to classpath 把tomcat-juli.jar包也加到CLASSPATH中
    rem tomcat-juli.jar can be over-ridden per instance 
    if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome
    set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar"
    goto juliClasspathDone
    :juliClasspathHome
    set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"
    :juliClasspathDone
    
    rem 还不知道2048是什么意思 :
    if not "%JSSE_OPTS%" == "" goto gotJsseOpts
    set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
    :gotJsseOpts
    set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
    
    rem 加载logging.properties配置信息
    if not "%LOGGING_CONFIG%" == "" goto noJuliConfig
    set LOGGING_CONFIG=-Dnop
    if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig
    set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
    :noJuliConfig
    
    rem 设置日志处理器
    if not "%LOGGING_MANAGER%" == "" goto noJuliManager
    set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    :noJuliManager
    
    rem ----- Execute The Requested Command ---------------------------------------
    rem  打印获得环境以及配置信息
    echo Using CATALINA_BASE:   "%CATALINA_BASE%"
    echo Using CATALINA_HOME:   "%CATALINA_HOME%"
    echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
    if ""%1"" == ""debug"" goto use_jdk
    echo Using JRE_HOME:        "%JRE_HOME%"
    goto java_dir_displayed
    :use_jdk
    echo Using JAVA_HOME:       "%JAVA_HOME%"
    :java_dir_displayed
    echo Using CLASSPATH:       "%CLASSPATH%"
    
    set _EXECJAVA=%_RUNJAVA%
    
    rem 设置启动类
    set MAINCLASS=org.apache.catalina.startup.Bootstrap
    set ACTION=start
    set SECURITY_POLICY_FILE=
    set DEBUG_OPTS=
    set JPDA=
    
    if not ""%1"" == ""jpda"" goto noJpda
    set JPDA=jpda
    if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
    set JPDA_TRANSPORT=dt_socket
    :gotJpdaTransport
    if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
    set JPDA_ADDRESS=8000
    :gotJpdaAddress
    if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
    set JPDA_SUSPEND=n
    :gotJpdaSuspend
    if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
    set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
    :gotJpdaOpts
    shift
    :noJpda
    
    if ""%1"" == ""debug"" goto doDebug
    if ""%1"" == ""run"" goto doRun
    if ""%1"" == ""start"" goto doStart
    if ""%1"" == ""stop"" goto doStop
    if ""%1"" == ""configtest"" goto doConfigTest
    if ""%1"" == ""version"" goto doVersion
    
    echo Usage:  catalina ( commands ... )
    echo commands:
    echo   debug             Start Catalina in a debugger
    echo   debug -security   Debug Catalina with a security manager
    echo   jpda start        Start Catalina under JPDA debugger
    echo   run               Start Catalina in the current window
    echo   run -security     Start in the current window with security manager
    echo   start             Start Catalina in a separate window
    echo   start -security   Start in a separate window with security manager
    echo   stop              Stop Catalina
    echo   configtest        Run a basic syntax check on server.xml
    echo   version           What version of tomcat are you running?
    goto end
    
    rem  加载安全文件
    
    :doDebug
    shift
    set _EXECJAVA=%_RUNJDB%
    set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java"
    if not ""%1"" == ""-security"" goto execCmd
    shift
    echo Using Security Manager
    set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
    goto execCmd
    
    :doRun
    shift
    if not ""%1"" == ""-security"" goto execCmd
    shift
    echo Using Security Manager
    set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
    goto execCmd
    
    :doStart
    shift
    if "%TITLE%" == "" set TITLE=Tomcat
    set _EXECJAVA=start "%TITLE%" %_RUNJAVA%
    if not ""%1"" == ""-security"" goto execCmd
    shift
    echo Using Security Manager
    set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
    goto execCmd
    
    :doStop
    shift
    set ACTION=stop
    set CATALINA_OPTS=
    goto execCmd
    
    :doConfigTest
    shift
    set ACTION=configtest
    set CATALINA_OPTS=
    goto execCmd
    
    :doVersion
    %_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo
    goto end
    
    
    :execCmd
    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
    
    rem Execute Java with the applicable properties
    rem 启动main 函数,按参数配置的情况,决定按何种方式启动
    if not "%JPDA%" == "" goto doJpda
    if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %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%
    goto end
    :doSecurity
    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
    goto end
    :doJpda
    if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_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%
    goto end
    :doSecurityJpda
    %_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
    goto end
    
    :end

    3. Bootstrap.jar中Bootstrap中的main()方法:

        public static void main(String[] args) {
            if (daemon == null) {
                Bootstrap bootstrap = new Bootstrap();
                try {
                    //对Bootstrap进行初始化
                    bootstrap.init();
                } catch (Throwable t) {
                    handleThrowable(t);
                    t.printStackTrace();
                    return;
                }
                daemon = bootstrap;
            } else {
                Thread.currentThread().setContextClassLoader(daemon.catalinaLoader);
            }
            try {
                //启动服务还是关停服务,有传入的命令行决定
                String command = "start";
                if (args.length > 0) {
                    command = args[(args.length - 1)];
                }
    
                if (command.equals("startd")) {
                    args[(args.length - 1)] = "start";
                    daemon.load(args);
                    daemon.start();
                } else if (command.equals("stopd")) {
                    args[(args.length - 1)] = "stop";
                    daemon.stop();
                } else if (command.equals("start")) {
                    daemon.setAwait(true);
                    daemon.load(args);
                    daemon.start();
                } else if (command.equals("stop")) {
                    daemon.stopServer(args);
                } else if (command.equals("configtest")) {
                    daemon.load(args);
                    if (null == daemon.getServer()) {
                        System.exit(1);
                    }
                    System.exit(0);
                } else {
                    log.warn(new StringBuilder().append("Bootstrap: command \"").append(command).append("\" does not exist.").toString());
                }
            } catch (Throwable t) {
                if (((t instanceof InvocationTargetException)) && (t.getCause() != null)) {
                    t = t.getCause();
                }
                handleThrowable(t);
                t.printStackTrace();
                System.exit(1);
            }
        }

    到此tomcat启动流程1结束;后面的文章我将介绍,Bootstrap中的main() 里面发生了什么!

     

    展开全文
  • jdk1.7+tomcat7

    2017-12-25 15:27:47
    jdk1.7+tomcat7打包下载jdk1.7+tomcat7打包下载jdk1.7+tomcat7打包下载
  • 一、概述 1.eclipse 4.3.2v(旧版):支持tomat7;jdk 1.7 tomcat7中Servlet版本3.0,jsp2.2 2.eclipse 4.6.3.v(新版 neon版):支持tomcat 8;jdk 1.8 tomacat8中Ser...
    • 一、概述 
    • 1.eclipse 4.3.2v(旧版):支持tomat7;jdk 1.7

     tomcat7中Servlet版本3.0,jsp2.2

    • 2.eclipse 4.6.3.v(新版 neon版):支持tomcat 8;jdk 1.8

    tomacat8中Servlet版本3.1,jsp2.3

    • 二、如何查看eclipse版本

    help-about eclipse

    190359_l0eS_3422045.png

    选择eclipse图标

    190448_Vwzf_3422045.png

     即可查看

    190547_ifFH_3422045.png

    • 三、查看tomact的servlet和jsp版本

    apache-tomcat-8.5.15文件--lib--jsp-api.jar和servlet-api.jar--压缩文件打开

    191029_83uR_3422045.png

    记事本打开文件,即可看到其版本

    转载于:https://my.oschina.net/u/3422045/blog/979337

    展开全文
  • tomcat接受跨域请求时,需要配置相关filter,此jar包导入lib中,在tomcat的web.xml添加相关内容即可解决tomcat跨域问题
  • Tomcat和JDK版本的对应关系

    千次阅读 2021-02-26 20:25:15
    在面临以下两种情景时,我们常常讨论Tomcat和JDK版本的对应关系。一是:安装哪种版本的JDK,可以使tomcat运行起来;二是:安装哪种版本的JDK+Tomcat组合,可以让我用某版本JDK编写的网站运行起来。其实,这两种问题...

    在面临以下两种情景时,我们常常讨论Tomcat和JDK版本的对应关系。

    一是:安装哪种版本的JDK,可以使tomcat运行起来;

    二是:安装哪种版本的JDK+Tomcat组合,可以让我用某版本JDK编写的网站运行起来。

    其实,这两种问题有一个共同的答案:低版本JDK无法运行高版本JDK编译的代码。

    tomcat官网(http://tomcat.apache.org/whichversion.html)给出了tomcat和JDK版本的匹配情况:

    e39f336e25d08627dca1d733bbb2c288.png

    我安装了tomcat9和JDK1.7,当我启动tomcat时报错(Unsupported major.minor version 52.0):

    (52.0是java编码器的内部编号,JDK1.4--48.0,JDK1.5--49.0,JDK1.6--50.0,JDK1.7--51.0,JDK1.8--52.0)

    b630f20f4abcbb6f5a0016bbd7e4ca0f.png

    出现这个问题的原因是:本地安装的JDK1.7和tomcat9不兼容,tomcat9需要在1.8版本以上的JDK环境上才能正常运行。另外,下载的Tomcat的RUNNING.txt也有当前版本所需JDK说明:

    Apache Tomcat 9.0 requires a Java Standard Edition Runtime Environment (JRE) version 8 or later.

    展开全文
  • maven的使用需要的是jdk 1.7+的版本 2. 需要jdk设置好了 环境变量 path变量(JAVA_HOME)tomcat主动寻找的配置变量 3. 下载解压后mavenjar包 4. 配置 maven的环境变量,因为maven也是需要在电脑中进行使用,...

    什么是maven工程?

    		maven工程是一个项目管理工具,它包含了一个对于项目对象模型(POM),一组标准集合,一个项目生命周期,一个项目管理系统和用来运行定义在生命周期阶段中插件目标的的逻辑。
    		简单来说,就是来帮助你管理项目的一个工具,用来管理项目中需要用到的jar包,和工程之间的项目之间的关系的工具。
    

    能够解决什么问题呢:

    	 项目的开发过程包括,编译,测试,运行,打包,部署等步骤,对于这些既然繁琐而又技术量不高的方式完成可以使用相关的工具进行管理,而现在的maven项目管理工具就是这种工具。
    	 优势:
    	 		1. 项目中使用的jar包将会防止冲突,jar包的缺失扽该问题
    	 		2. 项目的整体的体积小,能够将jar包专门存储到一个仓库中,当需要的时候,进行索引获取jar包,能够让项目的体积变得小巧,不需要大量的jar包存在工程中,导致项目体积庞大
    

    maven的两个经典作用:

    	1.maven的一个核心特性就是依赖管理,当我们涉及到多模块的项目(包含上百个模块的时候),管理依赖就变成一项很困难的任务,maven展示出了对于这种管理的强大控制
    	对比:传统的web项目中,我们必须将工程所依赖的jar包复制到工程中去,导致了工程将会变得非常庞大,而maven工程的方式不是直接将jar包导入到工程中去,而是通过在pom.xml.也就是项目的配置文件中添加所需要的jar包的坐标。在需要使用jar包的时候,只要查找pom.xml文件,再通过jar包进行索引查找maven仓库中根据坐标找到相应的jar包
    
    	疑问:
    			jar包在哪里?长什么样子?是不不是通通过索引的方式将会变得很慢,项目的性能会不i会收到影响
    			
    	解答:
    			1. jar包存放再jar包的仓库,仓库中放置了相关几乎所有开发需要用到的包,可以根据需求进行查找
    			2. 仓库中是一个大的文件管理系统,里面有相关文件和文件夹,不同的文件中存放着不同的jar包的资源,已经进行了项目的jar包的分类
    			3. 不用担心性能的问题。jar的存在和依赖于已经被maven开发人员解决了,提供类似于数组中的索引的机制,实现查找快,可以快速建立,快速查找的机制,大大提高了加载jar包的速度,使得我们认为jar包基本跟放在本地的工程中在进行读取的速度是一样的,这个过使用的是搜索类似于Luces来实现的,通过搜关键字进行索引实现
    

    项目的一键构建:

    			1. 一键构建指的是:项目从编译,测试,运行,打包,安装,部署整个过程都交给maven进行管理,这个过程称为构建
    			2. 特指整个过程,使用maven一个命令可以轻松的完成整个工作
    			3. 一键运行的命令:tomcat :run
    
    
    maven工程的规范化构建过程如下:
    			
    			清理(mvn clean),编译(mvn  compile),测试(mvn test),报告(),打包(mvn package),安装部署(mvn install) 
    

    在这里插入图片描述

    maven的安装:

    		1. maven的使用需要的是jdk 1.7+的版本
    		2. 需要jdk设置好了  环境变量  path变量(JAVA_HOME)tomcat主动寻找的配置变量
    		3. 下载解压后mavenjar包   
    		4. 配置 maven的环境变量,因为maven也是需要在电脑中进行使用,任何地方都可以获取对应的maven的命令
    		5. MAVEN_HOME (对应的安装路径即可bin之前目录)
    

    在这里插入图片描述 6. 验证是否maven的环境变量和jdk的环境变量是否已经确定安装好
    7. cmd 窗口 mvn -v ---->如果出现相关的配置即可,下面是对应的配置的信息

    在这里插入图片描述

    maven工程的目录结构:

    	1. 作为一个maven工程,它的src目录和pom.xml文件是必备的,进入到src的目录后如下2
    

    在这里插入图片描述
    2. src目录下的文件结构如下,如果没有齐全,需要自己进行补齐文件的配置

    						src/main/java:    存放项目编写java的文件,.java文件
    						src/main/resources:    存放项目的资源文件,类似于一些配置文件等
    						src/test/java:      存放所有单元测试.java文件,如 Junit的测试类
    						target:   项目输出的位置,编译后的 .class文件会输出到这个目录,跟calsspath目录一样
    						pom.xml: maven工程项目的核心配置文件,也就是坐标文件的配置等
    

    在这里插入图片描述

    maven中已经集成依赖了相关的tomcat的运行包:低版本 tomcat6

    提供冲突的处理异常的机制:对于作用域的控制,进行何时及逆行使用,不适用进行更改,作用域。
    作用域的控制类型主要有这么几个:
    		  主要时因为jar的冲突的范围,如果同一个文件类型存在两个版本的jar包的话,就会有选择的障碍,不知道寻找那个jar的存在
    		test    :测试中起作用
    		provide : 编译和测试的时候起作用
    		runtime  :只在测试,运行的时候起作用
    		compile  :编译,测试,运行的时候起作用
    		system  :编译,测试的时候起作用
    

    tomcat不能编译jsp的原因有两个
    1. jar包的冲突
    2. 低版本的tomcat不能编译适配高版本的jdk
    发送到服务器的文件编译:
    1. jsp文件是被发送到tomcat服务器中,tomcat服务器进行翻译成servlet的文件,servlet再次被jdk进行编码成二进制的文件
    2. maven中的自带的tomcat6大幅度的不能支持高版本jdk编写的jsp文件,造成栈溢出,不能编译成功的原因
    3. jsp文件是被发送到tomcat中进行编译的,所以 当服务器的500错误的时候,就是服务器的问题,服务器不能进行编译,tomcat有问题。
    4. maven自带的tomcat的存在目录的文件下:通过查找对应的主机引擎 tomcat-catalina引擎的确定的版本,可以直接删除中央仓库中自带的tomcat6,下载高版本(最高7)的问题,那么便不会存在其他的问题,下次进行执行的时候使用的默认版本,本地仓库中自己添加的版本 tomcat7.x版本,可以解决很多问题
    5. tomcat6 jdk5
    6. tomcat7 jdk6+
    7. tomcat8 jdk7+
    8. tomcat9 jdk8+

    在这里插入图片描述

    maven的插件的集成过程:
    1. 安装好maven工具已经安装好:
    tomcat插件的集成:maven中默认集成的是tomcat6的版本,特别注意的是目前的中央仓库中并没有提供tomcat8的插件,也就是在中央仓库中最高的插件时 tomcat



    org.apache.tomcat.maven
    tomcat7-maven-plugin 中央仓库中存在的tomcat的插件,如果没有提示那么就表示中央仓库没有或者本地仓库没有约束指定
    2.1 tomcat的版本
    自定义配置的标签
    80 指定端口
    /mgr 指定虚拟访问的路径
    UTF-8 防止中文乱码,指定tomcat的编码集标识
    tomcat7 自定义tomcat的名字的指定



    展开全文
  • tomcat指定启动依赖的JDK版本

    千次阅读 2018-04-18 14:50:52
    项目原来使用的jdk版本位1.7,导致机器上很多tomcat都是依赖jdk1.7版本。现在部分项目需要升级jdk1.8,则单独指定启动jdk路径windows环境找到bin下的setclasspath.bat/catalina.bat文件,在文件的开始出添加如下代码...
  • 首先:配置eclipse的运行server:我们配置成tomcat7版本+jdk1.7版本;然后把之前的web项目添加到服务器中 ,但是提示添加失败:因为我们之前的项目NetWatcher是基于基于tomcat8+jdk1.8开发的DynamicWebProject选择 ...
  • 关于“jdk”版本不支持问题的总结

    千次阅读 2021-02-05 12:19:16
    关于“jdk”版本不支持问题的总结一、问题描述1.问题1java.lang.UnsupportedClassVersionError: common/TimerListener : Unsupported major.minor version 52.0 (unable to load class common.TimerListener)at org....
  • Tomact集成jre或jdk

    2016-01-19 17:41:01
     为了方便不让用户在机器上配置java环境变量,减少用户的操作步骤及一些不必要的麻烦,需要将JDK(java程序编译环境)或JRE(java程序运行环境)集成到Tomact中,这样在用户机器上部署就不用手动配置环境变量了。...
  • Tomact配置流程

    2017-11-16 16:09:08
    发现老是忘东西,所有把自己做的,配的东西都写到博客...1.下载Tomact压缩包,我用的是Tomact1.7版本的 http://download.csdn.net/download/qq_25391785/10121523 2.将Tomcat解压到D:\Tomcat下 3.在eclipse中选择
  • 检测原OPENJDK版本 # Java -version 进一步查看JDK信息 # rpm -qa|grep java 、卸载jdk # rpm -e --nodeps jdk-1.6.0_22-fcs 解压jdk tar xvf jdk-7u45-linux-x64.tar.gz /usr/local/java 卸载rpm版的jdk: ...
  • 例如:rpm -e --nodeps java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 mkdir -p /usr/lib/jvm #新建文件夹 tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm #解压tar包 vi /etc/profile ...
  • eclipse中的项目用配置的Tomact启动。但是出现问题,如下:Caused by: java.lang.IllegalStateException: Context namespace element 'component-scan' and its parser class [org.springframework.context....
  • Dubbo基础篇_01_CentOS安装jdk,Tomact环境

    万次阅读 2016-03-23 14:31:52
    CentOS安装jdk,Tomact环境
  • 今天在win10上配置了jdk以及tomact先前使用jdk7+tomact7.0.56运行失败. 后经调整后正确配置注意事项如下: 1.下载并按照jdk-8u161-windows-x64,默认安装在c盘 2.下载免安装版tomact7.0.85并安装 3.Java环境配置 ...
  • 3、apache Tomact安装配置 4、在MyEclipse上添加tomact 三、环境搭建(Mac平台) 一、前言 今天周末本来想整理一下以前在公司开发的Android项目,但是很多都是内部项目没有服务器代码,很多功能都是运行不了的。...
  • JDK1.7环境变量配置

    2016-12-29 10:34:58
    1.配置JAVA_HOME,方便其他其他软件引用约定好的JAVA_HOME,比如Tomact。在系统变量中新建变量名:JAVA_HOME,变量值为jdk1.7所在路径;如图: 2.配置Path,它能使我们在系统中的任何地方运行java程序。在系统...
  • 1、第一步,关于如何配置多个JDK版本。可以参考网上其他示例:https://www.jb51.net/article/173091.htm 当配置JDK以后,点+号还可以继续配置 2、配置好,多个JDK版本以后,如何在项目的不同工程中,选择合适的...
  • Tomact 优化(转)

    2016-05-16 21:02:18
    (2)NIO:NIO(New I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它...
  • idea部署web项目时Tomcat与jdk版本问题

    千次阅读 2019-05-21 21:32:50
    1:tomcat 版本apache-tomcat-7.0.32 2:jdk 版本 jdk1.8.0_111 在idea部署web项目时,当启动tomcat时,后台提示如下错误: 前台页面提示如下错误: 二:问题排查 1:从报错信息可以看出这三种:编译错误...
  • 启动 tomact  ./startup.sh 第五步:输入ip地址和端口号就能访问项目路径 ps -ef | grep tomcat 命令如果打印你的jdk tomcat信息,表示tomcat已经正确启动   转载于:...
  • Tomcat和JDK版本的对应关系(转)

    万次阅读 2019-06-13 14:50:59
    第二个是,如果我们安装某个Tomcat+JDK组合(比如Tomcat7+JDK1.7),能否把我们某个版本JDK(比如JDK1.6)编写的网站给运行起来。 对于第一个问题,可以通过官网的这张图最后一列得到答案(下载的Tomcat的RUNNING....
  • import一个项目进MyEclipse,原项目jdk版本用的1.8,tomcat8.0,现在我的环境是tomcat6.0,jdk1.7,报错。  在下图所示,点击jre System Liabrary,选择edit,更改jdk版本1.7:  然后在java代码的@Override...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 409
精华内容 163
关键字:

tomact1.7版本