• Tomcat详解


    在经历了云服务器的配置吹残后,我决定深刻的研究一下Tomcat服务器!

    详见:https://www.cnblogs.com/wangdaijun/p/5014898.html

    简介

    一,Tomcat简介

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,它早期的名称为catalina,后来由Apache、Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,因为Tomcat 技术先进、性能稳定,成为目前比较流行的Web 应用服务器。Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,但它是独立运行的。目前最新的版本为Tomcat 8.0.24 Released。

    Tomcat不是一个完整意义上的Jave EE服务器,它甚至都没有提供对哪怕是一个主要Java EE API的实现;但由于遵守apache开源协议,tomcat却又为众多的java应用程序服务器嵌入自己的产品中构建商业的java应用程序服务器,如JBoss和JOnAS。尽管Tomcat对Jave EE API的实现并不完整,然而很企业也在渐渐抛弃使用传统的Java EE技术(如EJB)转而采用一些开源组件来构建复杂的应用。这些开源组件如Structs、Spring和Hibernate,而Tomcat能够对这些组件实现完美的支持。

    二. 安装Tomcat

    Tomcat的官方站点为http://tomcat.apache.org/,要安装Tomcat,(首先需要安装JDK),下载后解压就在指定目录就可以了,添加一下脚本启动即可

    [root@localhost tomcat]# vim /etc/init.d/tomcat    #提供启动脚本
    #!/bin/sh
    # Tomcat init script for Linux.
    #
    # chkconfig: 2345 96 14
    # description: The Apache Tomcat servlet/JSP container.
    # JAVA_OPTS='-Xms64m -Xmx128m'
    JAVA_HOME=/usr/java/latest
    CATALINA_HOME=/usr/local/tomcat
    export JAVA_HOME CATALINA_HOME
    case $1 in
    start)
      exec $CATALINA_HOME/bin/catalina.sh start ;;
    stop)
      exec $CATALINA_HOME/bin/catalina.sh stop;;
    restart)
      $CATALINA_HOME/bin/catalina.sh stop
      sleep 2
      exec $CATALINA_HOME/bin/catalina.sh start ;;
    configtest)
      exec $CATALINA_HOME/bin/catalina.sh configtest ;;
    *)
      exec $CATALINA_HOME/bin/catalina.sh * ;;
    esac

    三. Tomcat目录系解析
    bin:该目录下存放的是二进制可执行文件,

    如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat;

    如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat,

    Linux版本用start.sh来启动,用shutdown.sh来停止Tomcat;

    conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件: 

    server.xml:
    
    配置整个服务器信息。例如修改端口号,添加虚拟主机等;
    tomcatusers.xml:
    
    存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。
    可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了; web.xml: 部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,
    如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。
    客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,
    那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的! context.xml: 对所有应用的统一配置,通常我们不会去配置它。

    lib:Tomcat的类库,里面是一大堆jar文件。

    如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的Jar包了,所以建议只把Tomcat需要的Jar包放到这个目录下;
    logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。
    temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
    webapps:存放web项目的目录,其中每个文件夹都是一个项目;

    如果这个目录下已经存在了目录,那么都是tomcat自带的。

    项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。
    work:运行时生成的文件,最终运行的文件都在这里。

    通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

    四. 配置文件详解

    Tomcat的配置文件默认存放在/usr/local/tomcat/conf目录中,主要有以下几个

    catalina.policy      context.xml         server.xml        web.xml
    catalina.properties  logging.properties  tomcat-users.xml

    server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm,Valve,Hosts主组件的相关配置信息
    web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息;
    tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;
    catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力;
    catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat6在启动时会事先读取此文件的相关设置
    logging.properties: Tomcat6通过自己内部实现的JAVA日志记录器来记录操作相关的日志,此文件即为日志记录器相关的配置信息,可以用来定义日志记录的组件级别以及日志文件的存在位置等;
    context.xml:所有host的默认配置信息;

    <Server port=”8005″ shutdown=”SHUTDOWN”>
    
      <Listener className=”org.apache.catalina.core.JasperListener” />
      <Listener className=”org.apache.catalina.mbeans.ServerLifecycleListener” />
      <Listener className=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” />
    
      <GlobalNamingResources>
       <Resource name=”UserDatabase” auth=”Container”
       type=”org.apache.catalina.UserDatabase”
       description=”User database that can be updated and saved”
       factory=”org.apache.catalina.users.MemoryUserDatabaseFactory”
       pathname=”conf/tomcat-users.xml”/>
      </GlobalNamingResources>
    
      <Service name=”Catalina”>
    
        <Connector port=”8080″ protocol=”HTTP/1.1″
          maxThreads=”150″ connectionTimeout=”20000″
          redirectPort=”8443″/>
    
        <Engine name=”Catalina” defaultHost=”localhost”>
    
          <Host name=”localhost” appBase=”webapps”
            unpackWARs=”true” autoDeploy=”true”
            xmlValidation=”false” xmlNamespaceAware=”false”>
          </Host>
        </Engine>
      </Service>
    </Server>
  • 相关阅读:
    多线程间通信之AutoResetEvent和ManualResetEvent的原理分析和开发示例
    【推荐】基于WebActivator的改进版本KudyStudio.Web.Activating讲解与源码下载
    Visual Studio中你所不知道的智能感知
    压缩网页图片
    二叉树
    DynamicXml 动态读取操作XML (一个从XML到Object的通用实现)
    张剑微软2011 GCR MVP Open Day 之旅!【转载】
    使用Solr构建企业级的全文检索
    jQuery版仿Path菜单发布!
    使用maven进行开发过程管理之准备篇
  • 原文地址:https://www.cnblogs.com/lukelook/p/11114630.html
Copyright © 2020-2023  润新知