精华内容
下载资源
问答
  • Tomcat服务部署和优化一、Tomcat介绍1.1 什么是Tomcat1.2 Tomcat的构成组件1.2.1 Java Servlet 介绍1.2.1 JSP介绍1.3 Tomcat顶层架构1.3.1 四个子容器的作用分别是:1.4 Tomcat请求过程二、Tomcat服务部署2.1 Tomcat...

    一、Tomcat介绍

    1.1 什么是Tomcat

    在这里插入图片描述

    Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。

    官方网站:https://tomcat.apache.org/

    1.2 Tomcat的构成组件

    Tomcat 由一系列的组件构成,其中核心的组件有三个:

    (1)Web 容器:完成 Web 服务器的功能。

    (2)Servlet 容器:名字为 catalina,用于处理 Servlet 代码。

    (3)JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码。

    1.2.1 Java Servlet 介绍

    是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。与CGI(公共网关接口)功能相类似。

    1.2.1 JSP介绍

    JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头,以%>结束。
    JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。
    JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

    1.3 Tomcat顶层架构

    • 1、Tomcat中最顶层的容器是Server,代表着整个服务器,一个Server可以包含至少一个Service,用于具体提供服务。
    • 2、Service主要包含两个部分:Connector和Container。Tomcat的心脏就是这两个组件,这两个组件的作用:Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化; Conta iner用于封装和管理Servlet,以及具体处理Request请求。
    • 3、一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接。
    • 4、多个Connector和一个Container就形成了一个Service,有了Service就可以对外提供服务了,但是Service还要一个生存的环境,必须要有人能够给它生命、掌握其生死大权,那就非Server莫属了!所以整个Tomcat的生命周期由Server控制。另外,上述的包含关系或者说是父子关系,都可以在tomcat的conf目录下的server .xml配置文件中看出。
    • 5、server.xm1中定义<Server port=“8005” shutdown=“SHUTDOWN”>这会让Tomcat6启动一个server实例(即一个JVM),它监听在8005端口以接收“SHUTDOWN”命令,如果接收到了就会关闭Tomcat。各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。

    在这里插入图片描述

    1.3.1 四个子容器的作用分别是:

    • (1) Engine: 引擎,用来管理多个站点,一个Service最多只能有一个Engine;

    • (2) Host:代表一个站点,也可以叫虚拟主机,通过配置Host就可以添加站点;

    • (3) Context:代表一个应用程序,对应着平时开发的一套程序,或者一个WEB-INF目录以及下面的web.xml文件;

    • (4) Wrapper: 每一Wrapper封装着 一个Servlet;

    1.4 Tomcat请求过程

    在这里插入图片描述

    1. 用户在浏览器中输入该网址,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得;
    2. Connector把该请求交给它所在的Service的Engine (Container) 来处理,并等待Engine的回应;
    3. Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host;
    4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhostHost获得请求/test/index.jsp,匹配它所拥有的所有Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“”的Context去处理);
    5. path="/test"的Context获得请求/ index. jsp,在它的mapping table中寻找出对应的Servlet。Context 匹配到URLPattern为* .jsp的Servlet,对应于JspServlet类;
    6. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost(),执行业务逻辑、数据存储等
    7. Context把执行完之后的HttpServletResponse对象返回给Host; .
    8. Host把HttpServletResponse对象返回给Engine;
    9. Engine把HttpServletResponse对象返回Connector;
    10. Connector把HttpServletResponse对象返回给客户Browser

    二、Tomcat服务部署

    2.1 Tomcat服务部署的步骤(理论)

    在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
    1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下

    jdk-8u201-linux-x64.rpm
    apache-tomcat-9.0.16.tar.gz
    
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    

    2.安装JDK

    cd /opt
    rpm -qpl jdk-8u201-linux-x64.rpm 
    rpm -ivh jdk-8u201-linux-x64.rpm 
    java -version							#可以查看到java的版本:"1.8.0_131"是默认自带的
    

    3.设置JDK环境变量

    vim /etc/profile.d/java.sh
    
    export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar						
    export PATH=$JAVA_HOME/bin:$PATH
    
    source /etc/profile.d/java.sh
    java -version
    

    补充:
    CLASSPATH:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。
    dt.jar:是关于运行环境的类库,主要是 swing 的包。
    tools.jar:主要是一些jdk工具的类库,包括javac,java,javap,javadoc等。
    JDK :java development kit (java开发工具)
    JRE :java runtime environment (java运行时环境)
    JVM :java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件。

    写一个简单的java程序测试JDK是否搭建成功

    vim hello.java
    
    public class hello {
      public static void main(String[] args){
        System.out.println("Hello world!");
      }
    }
    
    javac hello.java				#对文件进行编译
    java hello						#运行java程序
    

    4.安装启动Tomcat
    cd /opt

    tar zxvf apache-tomcat-9.0.16.tar.gz
    mv apache-tomcat-9.0.16 /usr/local/tomcat
    

    ##启动tomcat ##
    #后台启动

    /usr/ local/ tomcat/bin/startup.sh
    
    /usr/ local /tomcat/bin/catalina.sh start
    

    #前台启动

    /usr/local/tomcat/bin/catalina.sh run
    
    /usr/local/tomcat/bin/startup.sh 
    
    netstat -natp | grep 8080							#查看8080端口是否开启
    

    浏览器访问Tomcat的默认主页 http://192.168.80.200:8080


    5.优化tomcat启动速度
    第一次启动查看日志会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。

    vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
    
    --117行--修改
    securerandom.source=file:/dev/urandom
    
    /usr/local/tomcat/bin/shutdown.sh 
    /usr/local/tomcat/bin/startup.sh 
    
    ll /usr/local/tomcat/
    

    主要目录说明

    ●bin :存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件
    ●conf :存放 Tomcat 服务器的各种配置文件,比较常用的是server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。
    ●lib :存放 Tomcat服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包
    ●logs :存放Tomcat 日志
    ●temp :存放 Tomcat 运行时产生的文件
    ●webapps :存放项目资源的目录
    ●work :Tomcat工作目录,一般清除 Tomcat 缓存的时候会使用到


    2.1 Tomcat服务部署的具体实验步骤(实操)

    第一步:放入相关安装包到/opt目录下
    在这里插入图片描述
    第二步:关闭防火墙和selinux

    在这里插入图片描述
    第三步:安装JDK
    在这里插入图片描述
    第四步:设置JDK环境变量
    1)创建java.sh 脚本
    在这里插入图片描述
    2)执行脚本文件,查看版本
    在这里插入图片描述
    第五步:编写一个java程序进行测试
    1)编写helloworld程序
    在这里插入图片描述
    2)使用javac进行编译
    在这里插入图片描述
    第六步:安装启动Tomcat
    1)解压tomcat程序
    在这里插入图片描述
    2)将解压后的文件移至/urs/local命令下并改名为tomcat
    在这里插入图片描述
    3)启动Tomcat
    在这里插入图片描述
    4)关闭tomcat
    在这里插入图片描述
    第七步:浏览器访问测试
    在这里插入图片描述
    第八步:优化tomcat启动速度
    在这里插入图片描述

    /dev/urandom是/dev/random的非阻塞版本,即当熵池中没有可取的随机数时,读取/dev/urandom设备仍然会返回一个随机数,只是该随机数的安全性理论上不高。如果应用对安全性要求很高,那么应该使用/dev/random。

    三、Tomcat服务优化

    3.1 Tomcat 虚拟主机配置

    1)Tomcat 虚拟主机配置的步骤(理论)

    使用环境:很多时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个Tomcat服务,这样会消耗太多的系统资源。此时,就需要使用到 Tomcat 虚拟主机。例如现在新增两个域名 www.kgc.com 和 bbs.benet.com,希望通过这两个域名访问到不同的项目内容。

    1.创建 kgc 和 benet 项目目录和文件

    mkdir /usr/local/tomcat/webapps/kgc
    mkdir /usr/local/tomcat/webapps/benet
    echo "This is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp
    echo "This is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp
    

    2.修改 Tomcat 主配置文件

    vim /usr/local/tomcat/conf/server.xml
    
    --165行前--插入
    <Host name="www.kgc.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    	<Context docBase="/usr/local/tomcat/webapps/kgc" path="" reloadable="true" />
    </Host>
    
    <Host name="www.benet.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    	<Context docBase="/usr/local/tomcat/webapps/benet" path="" reloadable="true" />
    </Host>
    
    /usr/local/tomcat/bin/shutdown.sh
    /usr/local/tomcat/bin/startup.sh
    

    Host name :主机名
    appBase :Tomcat程序工作目录,相对路径为webapps,绝对路径为/usr/local/tomcat/webapps
    unpackWARs :是否解压war包
    autoDeploy :指示Tomcat运行时,如有新的WEB应用是否允许自动部署
    xmlValidation :是否验证xml文件执行有效性检验的标志
    xmlNamespaceAware :是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验


    appBase :WEB应用的目录
    path :设置访问的URI为WEB应用的根目录
    reloadable :是否在程序有改动时重新载入

    3.客户端浏览器访问验证

    echo "192.168.80.200 www.kgc.com www.benet.com" >> /etc/hosts
    

    浏览器访问 http://www.kgc.top:8080 页面显示This is kgc page!
    浏览器访问 http://www.benet.top:8080 页面显示This is benet page!


    2)Tomcat 虚拟主机配置的具体实验步骤(实操)

    第一步:创建kgc和benet项目目录和文件
    在这里插入图片描述
    第二步:修改tomcat主配置文件
    在这里插入图片描述在这里插入图片描述
    第三步:重启tomcat服务
    在这里插入图片描述
    第四步:在hosts文件内添加域名和IP
    在这里插入图片描述
    第五步:浏览器中进行访问测试
    在这里插入图片描述

    3.2 Tomcat 配置参数优化

    Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化(内核参数优化),Tomcat配置文件参数优化,Java虚拟机(JVM)调优。
    常用的优化相关参数如下:

    参数解释
    【maxThreads】Tomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最大的线程数,默认值是 200。
    【minSpareThreads】最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10。
    【maxSpareThreads】最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。一般不需要指定。
    【URIEncoding】指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它 Web服务器软件配置方便,需要分别指定。
    【connnectionTimeout】网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以。
    【enableLookups】是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false。
    【disableUploadTimeout】上传时是否使用超时机制。应设置为 true。
    【connectionUploadTimeout】上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使Servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效。
    【acceptCount】指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个。
    【compression】是否对响应的数据进行GZIP压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为 off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽。
    【compressionMinSize】表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048。
    【compressableMimeType】压缩类型,指定对哪些类型的文件进行数据压缩。
    【noCompressionUserAgents=“gozilla, traviata”】对于以下的浏览器,不启用压缩

    以上是一些常用的配置参数,还有好多其它的参数设置,还可以继续深入的优化,HTTP Connector 与 AJP Connector 的参数属性值,可以参考官方文档的详细说明进行学习。

    vim /usr/local/tomcat/conf/server.xml
    
    <Connector port="8080" protocol="HTTP/11.1" 
    connectionTimeout="20000" 
    redirectPort="8443" 
    --71行--插入(上面的内容仅供参考位置)
    minSpareThreads="50" 
    enableLookups="false" 
    disableUploadTimeout="true" 
    acceptCount="300" 
    maxThreads="500" 
    processorCache="500"
    URIEncoding="UTF-8" 
    compression="on" 
    compressionMinSize="2048" 
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>
    

    实际配置截图:
    在这里插入图片描述

    展开全文
  • 先就业后付款Java程序员一定要学Tomcat架构吗...对于Java程序员来说,Tomcat架构是每一个初学Java者在入门之后都必需要学的基础知识之一,为什么Java程序员为什么一定要学Tomcat架构呢?理由其实很简单,Tomcat架构是...

    先就业后付款

    Java程序员一定要学Tomcat架构吗?为什么?

    IT培训网面向所有课程学员提供先就业后付款学习方案,保证学员稳定就业,可谓0学费!免除学习压力。

    正文:

    Java程序员一定要学Tomcat架构吗?为什么?对于Java程序员来说,Tomcat架构是每一个初学Java者在入门之后都必需要学的基础知识之一,为什么Java程序员为什么一定要学Tomcat架构呢?理由其实很简单,Tomcat架构是目前JavaEE开发中最主流的服务器之一 。下面这篇文章我们就来看看学习Tomcat架构的具体原因。

    要学Tomcat架构为什么?

    Tomcat架构是全世界最著名的Java Web轻量级应用服务器,同时它也是开发和调试JSP/Servelet的必备技能,而且它还是Apache软件基金会提供的免费、开源服务器。目前,Tomcat架构广泛应用于企业应用系统以及云服务平台。因此,Tomcat架构凭借着技术先进、性能稳定、应用广泛以及开源免费等诸多优势,成为Java程序员不得不掌握的基础技能。

    如何学Tomcat架构?

    IT培训网为广大Java学习者开设了Tomcat高级课程, 从Tomcat基础、架构、Jasper、服务器配置、web应用配置、Tomcat管理配置、JVM、Tomcat集群、Tomcat安全、性能调优等各方面进行了详细地讲解,并通过案例,深度讲解Tomcat对Websocket的支持。通过视频课程的在线学习,大家能深入地理解Tomcat底层原理,对Tomcat的设计架构有深刻地认识,从而对Tomcat进行更加深入地使用和优化,对系统的整体性能进行提升。

    Tomcat架构要学哪些内容?

    以IT培训网的课程大纲为例,为大家规划了一条详细的学习路径:

    第一章 Tomcat基础

    第二章 Tomcat架构

    第三章 Jasper 引擎

    第四章 服务器配置

    第五章 Web 应用配置

    第六章 Tomcat管理配置和内存参数

    第七章 Tomat集群

    第八章 Tomat安全

    第九章 Tomat性能调优

    第十章 WebSocket

    总之,如果你想深入地理解Tomcat底层原理和架构设计,并且在工作中对Tomcat进行深层使用和性能优化,就来IT培训网在线学习Tomcat架构的相关课程吧~

    展开全文
  • Tomcat

    2021-03-08 14:27:05
    开源的轻量级Web应用服务器。 二、tomcat结构目录 ①bin:启动和关闭tomcat的bat文件。 startup.bat , shutdown.bat 用于在windows下启动和停止脚本; startup.sh, shutdown.sh 用于在linux下启动和停止脚本; ...

    一、什么是Tomcat

    Tomcat 是由 Apache 软件基金会下属的 Jakarta 项目开发的一个 Servlet 容器。是开源的轻量级Web应用服务器。

    二、tomcat结构目录

    在这里插入图片描述

    ①bin:启动和关闭tomcat的bat文件。

    • startup.bat , shutdown.bat 用于在windows下启动和停止脚本;
    • startup.sh, shutdown.sh 用于在linux下启动和停止脚本;

    ②conf:配置文件。

    • Catalina 用于存储针对每个虚拟机的Context配置
    • context.xml 用于定义所有web应用均需加载的Context配置,如果web应用指定了自己的context.xml ,该文件将被覆盖
    • catalina.properties Tomcat 的环境变量配置
    • catalina.policy Tomcat 运行的安全策略配置
    • logging.properties Tomcat 的日志配置文件, 可以通过该文件修改Tomcat 的日志级别及日志路径等
    • server.xml该文件用于配置server相关的信息,比如tomcat启动的端口号,配置主机(Host)。
    • web.xml文件配置与web应用(web应用相当于一个web站点)
    • tomcat-user.xml配置用户名密码和相关权限。

    ③lib:该目录放置运行tomcat运行需要的jar包。

    ④logs:存放日志,当我们需要查看日志的时候,可以查询信息。

    ⑤webapps:放置我们的web应用。

    ⑥work工作目录:该目录用于存放jsp被访问后生成对应的server文件和.class文件。

    启动:双击 bin/startup.bat 文件 ;
    停止:双击 bin/shutdown.bat 文件 ;
    访问:http://localhost:8080

    三、Tomcat整体架构

    1、Tomcat核心功能

    我们已经了解了Tomcat要实现两个核心功能

    1) 处理Socket连接,负责网络字节流与Request和Response对象的转化。
    2) 加载和管理Servlet,以及具体处理Request请求。

    因此Tomcat设计了两个核心组件连接器(Connector)容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。
    在这里插入图片描述

    2、连接器

    在这里插入图片描述

    连接器中的各个组件的作用如下:
    1)EndPoint

    • EndPoint : Coyote 通信端点,即通信监听的接口,是具体Socket接收和发送处理器,是对传输层的抽象,因此EndPoint用来实现TCP/IP协议的。
    • Tomcat 并没有EndPoint 接口,而是提供了一个抽象类AbstractEndpoint , 里面定义了两个内部类:Acceptor和SocketProcessor。Acceptor用于监听Socket连接请求。SocketProcessor用于处理接收到的Socket请求,它实现Runnable接口,在Run方法里调用协议处理组件Processor进行处理。为了提高处理能力,SocketProcessor被提交到线程池来执行。而这个线程池叫作执行器(Executor),我在后面的专栏会详细介绍Tomcat如何扩展原生的Java线程池。

    2) Processor
    Processor : Coyote 协议处理接口 ,如果说EndPoint是用来实现TCP/IP协议的,那么Processor用来实现HTTP协议,Processor接收来自EndPoint的Socket,读取字节流解析成Tomcat Request和Response对象,并通过Adapter将其提交到容器处理,Processor是对应用层协议的抽象。

    3)ProtocolHandler
    ProtocolHandler: Coyote 协议接口, 通过Endpoint 和 Processor , 实现针对具体协议的处理能力。Tomcat 按照协议和I/O 提供了6个实现类 : AjpNioProtocol , AjpAprProtocol, AjpNio2Protocol , Http11NioProtocol ,Http11Nio2Protocol ,Http11AprProtocol。我们在配置tomcat/conf/server.xml 时 , 至少要指定具体的ProtocolHandler , 当然也可以指定协议名称 , 如 : HTTP/1.1 ,如果安装了APR,那么将使用Http11AprProtocol , 否则使用 Http11NioProtocol 。

    4)Adapter
    由于协议不同,客户端发过来的请求信息也不尽相同,Tomcat定义了自己的Request类来“存放”这些请求信息。ProtocolHandler接口负责解析请求并生成Tomcat Request类。但是这个Request对象不是标准的ServletRequest,也就意味着,不能用Tomcat Request作为参数来调用容器。Tomcat设计者的解决方案是引入CoyoteAdapter,这是适配器模式的经典运用,连接器调用CoyoteAdapter的Sevice方法,传入的是Tomcat Request对象,CoyoteAdapter负责将Tomcat Request转成ServletRequest,再调用容器的Service方法。

    3、容器

    Tomcat设计了4种容器,分别是Engine、Host、Context和Wrapper。容器的功能是处理Connector接收进来的请求,并产生相应的响应,这4种容器不是平行关系,而是父子关系, Tomcat通过一种分层的架构,使得Servlet容器具有很好的灵活性。

    1) Engine 表示整个Catalina的Servlet引擎,用来管理多个虚拟站点,一个Service最多只能有一个Engine,但是一个引擎可包含多个Host
    2)Host 代表一个虚拟主机,或者说一个站点,可以给Tomcat配置多个虚拟主机地址,而一个虚拟主机下可包含多个Context
    3)Context 表示一个Web应用程序, 一个Web应用可包含多个Wrapper
    4)Wrapper 表示一个Servlet,Wrapper 作为容器中的最底层,不能包含子容器

    四、server.xml

    server.xml是Tomcat中最重要的配置文件,server.xml位于$TOMCAT_HOME/conf目录下;server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制。

    server.xml的整体结构如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
      <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" connectionTimeout="20000" redirectPort="8443" />
        <!--连接器可以有多个 Engine 只能有一个处理->           
        <Engine name="Catalina" defaultHost="localhost">
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
          </Host>
        </Engine>
      </Service>
    </Server>
    

    1、server.xml文件中的元素可以分为以下4类

    (1)顶层元素:<Server><Service>
    <Server>元素是整个配置文件的根元素,<Service>元素则代表一个Engine元素以及一组与之相连的Connector元素。

    (2)连接器:<Connector>
    <Connector>代表了外部客户端发送请求到特定Service的接口;同时也是外部客户端从特定Service接收响应的接口。

    (3)容器:<Engine><Host><Context>
    容器的功能是处理Connector接收进来的请求,并产生相应的响应。Engine、Host和Context都是容器,但它们不是平行的关系,而是父子关系:Engine包含Host,Host包含Context。一个Engine组件可以处理Service中的所有请求,一个Host组件可以处理发向一个特定虚拟主机的所有请求,一个Context组件可以处理一个特定Web应用的所有请求。

    (4)内嵌组件:可以内嵌到容器中的组件。实际上,Server、Service、Connector、Engine、Host和Context是最重要的最核心的Tomcat组件,其他组件都可以归为内嵌组件。

    2、各个核心组件的作用、特点以及配置方式

    1)Server

    Server元素在最顶层,代表整个Tomcat容器,因此它必须是server.xml中唯一一个最外层的元素。一个Server元素中可以有一个或多个Service元素。

    在第一部分的例子中,在最外层有一个元素,shutdown属性表示关闭Server的指令;port属性表示Server接收shutdown指令的端口号,设为-1可以禁掉该端口。

    2)Service

    Service的作用,是在Connector和Engine外面包了一层,把它们组装在一起,对外提供服务。

    一个Service可以包含多个Connector,但是只能包含一个Engine;其中Connector的作用是从客户端接收请求,Engine的作用是处理接收进来的请求。

    在第一部分的例子中,Server中包含一个名称为“Catalina”的Service。实际上,Tomcat可以提供多个Service,不同的Service监听不同的端口。

    3)Connector

    Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine。

    通过配置Connector,可以控制请求Service的协议及端口号。Service可以配置两个Connector。

    eg:配置两个Connector

     <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    

    (1)通过配置第1个Connector,客户端可以通过8080端口号使用http协议访问Tomcat。其中,protocol属性规定了请求的协议,port规定了请求的端口号,redirectPort表示当强制要求https而请求是http时,重定向至端口号为8443的Connector,connectionTimeout表示连接的超时时间。

    在这个例子中,Tomcat监听HTTP请求,使用的是8080端口,而不是正式的80端口;实际上,在正式的生产环境中,Tomcat也常常监听8080端口,而不是80端口。这是因为在生产环境中,很少将Tomcat直接对外开放接收请求,而是在Tomcat和客户端之间加一层代理服务器(如nginx),用于请求的转发、负载均衡、处理静态文件等;通过代理服务器访问Tomcat时,是在局域网中,因此一般仍使用8080端口。

    (2)通过配置第2个Connector,客户端可以通过8009端口号使用AJP协议访问Tomcat。是因为Tomcat可以用作Servlet/JSP容器,但是对静态资源的处理速度较慢,不如Apache和IIS等HTTP服务器;因此常常将Tomcat与Apache等集成,前者作Servlet容器,后者处理静态资源,而AJP协议便负责Tomcat和Apache的连接。

    4)Engine

    Engine组件在Service组件中有且只有一个;Engine是Service组件中的请求处理组件。Engine组件从一个或多个Connector中接收请求并处理,并将完成的响应返回给Connector,最终传递给客户端。eg:

    <Engine name="Catalina" defaultHost="localhost">
    

    name属性用于日志和错误信息,defaultHost属性指定了默认的host名称,当发往本机的请求指定的host名称不存在时,一律使用defaultHost指定的host进行处理;因此,defaultHost的值,必须与Engine中的一个Host组件的name属性值匹配。

    name属性用于日志和错误信息,在整个Server中应该唯一。

    5)Host

    Host是Engine的子容器。Engine组件中可以内嵌1个或多个Host组件,每个Host组件代表Engine中的一个虚拟主机

    Host组件至少有一个,且其中一个的name必须与Engine组件的defaultHost属性相匹配。

    Host的作用:
    Host虚拟主机的作用,是运行多个Web应用(一个Context代表一个Web应用),并负责安装、展开、启动和结束每个Web应用。

    Host组件代表的虚拟主机,对应了服务器中一个网络名实体(如”www.test.com”,或IP地址”116.25.25.25”);为了使用户可以通过网络名连接Tomcat服务器,这个名字应该在DNS服务器上注册。

    客户端通常使用主机名来标识它们希望连接的服务器;该主机名也会包含在HTTP请求头中。Tomcat从HTTP头中提取出主机名,寻找名称匹配的主机。如果没有匹配,请求将发送至默认主机。因此默认主机不需要是在DNS服务器中注册的网络名,因为任何与所有Host名称不匹配的请求,都会路由至默认主机。

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
          </Host>
    

    Host的参数:

    • unpackWARs指定了是否将代表Web应用的WAR文件解压;如果为true,通过解压后的文件结构运行该Web应用,如果为false,直接使用WAR文件运行Web应用。
    • Host的autoDeploy和appBase属性,与Host内Web应用的自动部署有关;

    一个Engine中有且仅有一个Host组件的name属性与Engine组件的defaultHost属性相匹配

    Host元素内定义了Valve组件:
    不同的Valve有不同的特性,AccessLogValve记录的日志就是访问日志,每天的请求会写到一个日志文件里。AccessLogValve可以与Engine、Host或Context关联;

    一个容器内可以建立多个Valve,而且Valve定义的次序也决定了它们生效的次序。

    Valve组件参数:

    • className:规定了Valve的类型,是最重要的属性;本例中,通过该属性规定了这是一个AccessLogValve。
    • directory:指定日志存储的位置,本例中,日志存储在$TOMCAT_HOME/logs目录下。
    • prefix:指定了日志文件的前缀。
    • suffix:指定了日志文件的后缀。通过directory、prefix和suffix的配置,在$TOMCAT_HOME/logs目录下,可以看到如下所示的日志文件。
    • pattern:指定记录日志的格式

    小结:pattern中一些值:
    %h:远程主机名或IP地址;如果有nginx等反向代理服务器进行请求分发,该主机名/IP地址代表的是nginx,否则代表的是客户端。后面远程的含义与之类似,不再解释。
    %l:远程逻辑用户名,一律是”-”,可以忽略。
    %u:授权的远程用户名,如果没有,则是”-”。
    %t:访问的时间。
    %r:请求的第一行,即请求方法(get/post等)、uri、及协议。
    %s:响应状态,200,404等等。
    %b:响应的数据量,不包括请求头,如果为0,则是””-。
    %D:请求处理的时间(单位是毫秒)

    6)Context(静态部署)

    Context元素代表在特定虚拟主机上运行的一个Web应用。每个Web应用基于WAR文件,或WAR文件解压后对应的目录

    <Engine>
           <Host>
                 <Context /><!-- 现在常常使用自动部署,不推荐配置Context元素.-->
                 <Context path="/" docBase="D:\Program Files \app1.war" reloadable="true"/>
           </Host>
     </Engine>
    

    <context>元素参数如下:

    • docBase:docBase指定了该Web应用使用的WAR包路径,或应用目录。静态部署时,docBase可以在appBase目录下,也可以不在;本例中,docBase不在appBase目录下。
    • path:静态部署时,可以显式指定path属性,但是仍然受到了严格的限制:只有当自动部署完全关闭(deployOnStartup和autoDeploy都为false)或docBase不在appBase中时,才可以设置path属性。在本例中,docBase不在appBase中,因此path属性可以设置。
    • reloadable属性指示tomcat是否在运行时监控在WEB-INF/classes和WEB-INF/lib目录下class文件的改动。如果值为true,那么当class文件改动时,会触发Web应用的重新加载。在开发环境下,reloadable设置为true便于调试;但是在生产环境中设置为true会给服务器带来性能压力,因此reloadable参数的默认值为false。

    但是目前往往server.xml配置文件中看不到Context元素的出现,因为Tomcat开启了自动部署,Web应用没有在server.xml中配置静态部署,而是由Tomcat通过特定的规则自动部署。

    Context是Host的子容器,每个Host中可以定义任意多的Context元素。
    静态部署与自动部署是可以共存的。在实际应用中,并不推荐使用静态部署,因为server.xml 是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而自动部署可以在Tomcat运行时通过定期的扫描来实现,不需要重启服务器。

    7)Listener

    Listener(即监听器)定义的组件,可以在特定事件发生时执行特定的操作;被监听的事件通常是Tomcat的启动和停止。监听器需要配置的最重要的属性是className,该属性规定了监听器的具体实现类,该类必须实现了org.apache.catalina.LifecycleListener接口。

    <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
      <Listener className="org.apache.catalina.core.JasperListener" />
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
    

    下面依次介绍例子中配置的监听器:

    • VersionLoggerListener:当Tomcat启动时,该监听器记录Tomcat、Java和操作系统的信息。该监听器必须是配置的第一个监听器。
    • AprLifecycleListener:Tomcat启动时,检查APR库,如果存在则加载。APR,即Apache Portable Runtime,是Apache可移植运行库,可以实现高可扩展性、高性能,以及与本地服务器技术更好的集成。
    • JasperListener:在Web应用启动之前初始化Jasper,Jasper是JSP引擎,把JVM不认识的JSP文件解析成java文件,然后编译成class文件供JVM使用。
    • JreMemoryLeakPreventionListener:与类加载器导致的内存泄露有关。
    • GlobalResourcesLifecycleListener:通过该监听器,初始化< GlobalNamingResources>标签中定义的全局JNDI资源;如果没有该监听器,任何全局资源都不能使用。< GlobalNamingResources>将在后文介绍。
    • ThreadLocalLeakPreventionListener:当Web应用因thread-local导致的内存泄露而要停止时,该监听器会触发线程池中线程的更新。当线程执行完任务被收回线程池时,活跃线程会一个一个的更新。只有当Web应用(即Context元素)的renewThreadsWhenStoppingContext属性设置为true时,该监听器才有效。

    8)GlobalNamingResources与Realm

    Realm提供了一种用户密码与web应用的映射关系,从而达到角色安全管理的作用。Realm的配置使用name为UserDatabase的资源实现。而该资源在Server元素中使用GlobalNamingResources配置,GlobalNamingResources元素定义了全局资源,通过配置可以看出,该配置是通过读取$TOMCAT_HOME/ conf/tomcat-users.xml实现的。

    五、Tomcat 三种部署方式

    Tomcat 三种部署方式:
    1)在server.xml文件上配置<Context>节点,设置相关的属性即可(静态部署)【上文中提过】
    2)直接把Web项目放在webapps下,Tomcat会自动将其部署(自动部署)
    3)通过Catalina来进行配置:进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字。(自动部署)

    自动部署原理:

    通过配置Host元素的deployOnStartup和autoDeploy属性可以开启虚拟主机自动部署Web应用:当检测到新的Web应用或Web应用的更新时,会触发应用的部署(或重新部署)。

    二者的主要区别在于:deployOnStartup为true时,Tomcat在启动时检查Web应用,且检测到的所有Web应用视作新应用;autoDeploy为true时,Tomcat在运行时定期检查新的Web应用或Web应用的更新。

    自动部署依赖于检查是否有新的或更改过的Web应用,而Host元素的appBase和xmlBase设置了检查Web应用更新的目录

    • appBase属性指定Web应用所在的目录,默认值是webapps,这是一个相对路径,代表Tomcat根目录下webapps文件夹。
    • xmlBase属性指定Web应用的XML配置文件所在的目录,默认值为conf/<engine_name>/<host_name>,例如上文例子中,主机localhost的xmlBase的默认值是$TOMCAT_HOME/conf/Catalina/localhost。

    而Tomcat按照如下的顺序进行扫描,来检查应用更新:
    1)扫描虚拟主机指定的xmlBase下的XML配置文件
    2)扫描虚拟主机指定的appBase下的WAR文件
    3)扫描虚拟主机指定的appBase下的应用目录

    六、常用端口

    Tomcat 常见端口:8005、8009、8080、8443作用

    8005 ==> 8005端口是关闭tomcat进程所用

    <Server shutdown="SHUTDOWN" port="8005">
    

    8009 ==> HTTP等反向代理tomcat时就可以使用ajp协议反向代理到该端口
    8080 ==>默认的HTTP监听端口
    8843 ==> 默认的HTTPS监听端口。(默认未开启)

    <Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>
    

    七、tomcat 几种Connector 运行模式

    1、bio ==> 传统的Java I/O操作,同步且阻塞IO。默认的模式,性能最差,没有经过任何优化处理和支持

    <Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>
    

    2、nio ==> JDK1.4开始支持,同步阻塞或同步非阻塞IO。 拥有比传统I/O操作更好的并发运行性能

    <Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="org.apache.coyte.http11.Http11NioPortocol"/>
    

    3、aio ==> aio(nio.2): JDK7开始支持,异步非阻塞IO;
    4、apr ==>Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地 提高Tomcat对静态文件的处理性能. 从操作系统级别来解决异步IO的问题,大幅度的提高性能(需要安装apr native)

    <Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="org.apache.coyte.http11.Http11AprPortocol"/>
    

    查看 tomcat Connector 运行模式

    1、根据tomcat启动日志信息判断

    2、在http://x.x.x.x:8080/manager/status中查看服务器状态

    八、tomcat容器如何创建servlet类实例

    1、当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对 xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过 反射的方式实例化。(有时候也是在第一次请求时实例化)
    2、在servlet注册时加上1如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。

    九、Tomcat工作模式

    Tomcat作为servlet容器,有三种工作模式:

    1、独立的servlet容器,servlet容器是web服务器的一部分;
    2、进程内的servlet容器,servlet容器是作为web服务器的插件和java容器的实现,web服务器插件在内部地址空间打开一个jvm使得java容器在内部得以运行。反应速度快但伸缩性不足;
    3、进程外的servlet容器,servlet容器运行于web服务器之外的地址空间,并作为web服务器的插件和java容器实现的结合。反应时间不如进程内但伸缩性和稳定性比进程内优;
    进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:

    Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;
    Tomcat作为独立服务器:请求来自于web浏览器;

    展开全文
  • 1、将源码编译后打包的war包上传需要部署的机器1 [root@gz01-tomcat-node01 war]# mkdir -p /usr/local/jeesns2 [root@gz01-tomcat-node01 war]# cd /usr/local/jeesns/3 [root@gz01-tomcat-node01 jeesns]# pwd4 /...

    1、将源码编译后打包的war包上传需要部署的机器

    1 [root@gz01-tomcat-node01 war]# mkdir -p /usr/local/jeesns2 [root@gz01-tomcat-node01 war]# cd /usr/local/jeesns/

    3 [root@gz01-tomcat-node01 jeesns]# pwd

    4 /usr/local/jeesns5 [root@gz01-tomcat-node01 jeesns]# ll6 总用量 30264

    7 -rw-r--r--. 1 root root 30989551 4月 15 2019 jeesns.war

    2、在/usr/local/tomcat/conf/Catalina/localhost目录建立一个jeesns.xml文件

    1 [root@gz01-tomcat-node01 localhost]# vim jeesns.xml2 <?xml version="1.0" encoding="UTF-8"?>

    3

    3、把war包解压缩

    1 [root@gz01-tomcat-node01 jeesns]# uzip jeesns.war2 [root@gz01-tomcat-node01 jeesns]# catreadme.txt3 环境要求4 JDK8或更高版本5 Tomcat8.0或更高版本6 MySQL5.1或更高版本7

    8 搭建步骤9 1、将重新上传到支持JAVA的空间或者服务器上;10 2、导入数据库,将/database/jeesns.sql导入到mysql数据库中;11 3、修改数据库信息,修改文件:WEB-INF\classes\jeesns.properties12 jdbc.driver=com.mysql.jdbc.Driver13 jdbc.url=jdbc:mysql://数据库服务器IP(本地直接用localhost):端口号(默认3306)/数据库名?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull

    14 jdbc.user=数据库用户名15 jdbc.password=数据库密码16 #后台管理目录17 managePath=manage18

    19 4、重启Tomcat。20 后台登录地址:http://域名/manage/

    21 后台用户名:admin

    4、创建数据库,并且导入数据,在修改数据库信息

    1 [root@gz01-tomcat-node01 jeesns]# yum install mariadb-server -y2 [root@gz01-tomcat-node01 jeesns]# systemctl start mariadb3 [root@gz01-tomcat-node01 jeesns]# systemctl enable mariadb4 [root@gz01-tomcat-node01 jeesns]# mysql_secure_installation5 设置字符集:6 [root@gz01-tomcat-node01 jeesns]# vim /etc/my.cnf7 default-storage-engine =innodb8 innodb_file_per_table9 max_connections = 4096

    10 collation-server =utf8_general_ci11 character-set-server =utf812 [root@gz01-tomcat-node01 jeesns]# vim /etc/my.cnf.d/client.cnf13 [client]14 default-character-set=utf815 [root@gz01-tomcat-node01 jeesns]# vim /etc/my.cnf.d/mysql-clients.cnf16 [mysql]17 default-character-set=utf818 [root@gz01-tomcat-node01 jeesns]# systemctl restart mariadb

    创建jeesns数据库

    1 MariaDB [(none)]>CREATE DATABASE jeesns CHARACTER SET utf8 COLLATE utf8_general_ci;2 Query OK

    导入数据

    1 [root@gz01-tomcat-node01 database]# mysql -uroot -p -D jeesns < jeesns.sql

    修改数据库信息,修改文件:WEB-INF\classes\jeesns.properties

    1 [root@gz01-tomcat-node01 classes]# pwd

    2 /usr/local/jeesns/WEB-INF/classes3 [root@gz01-tomcat-node01 classes]# vim jeesns.properties4 jdbc.driver=com.mysql.jdbc.Driver5 jdbc.url=jdbc:mysql://localhost:3306/jeesns?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true

    6 jdbc.user=root7 jdbc.password=baidu.com@ip8

    9 managePath=manage10 groupPath=group11 weiboPath=weibo12 frontTemplate=front13 memberTemplate=member14 manageTemplate=manage15 mobileTemplate=mobile

    5、启动tomcat ,浏览器访问

    [root@gz01-tomcat-node01 tomcat]# ./bin/startup.sh

    Using CATALINA_BASE: /usr/local/tomcat

    Using CATALINA_HOME: /usr/local/tomcat

    Using CATALINA_TMPDIR: /usr/local/tomcat/temp

    Using JRE_HOME: /usr/local/jdk

    Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

    Tomcat started.

    http://192.168.1.124/jeesns

    7b1500da5a70a705a56e3469dff28aeb.png

    http://192.168.1.124/jeesns/manage/

    a0b2f16641e1985610906cd85f3ced32.png

    展开全文
  • tomcat(一)--java基础

    2021-03-09 17:09:51
    什么是java java所涉及到的相关概念如下图。总体来说就是java语言、java API、jvm等构成。... TOMCAT Tomcat是一个免费的开源的Serlvet容器,实现了Servlet和Jsp规范的一个产品。tomcat的体系结构如下
  • 今天开始了解Tomcat源码,首先需要尝试把Tomcat源码部署到IDEA,并进行mvn编译。步骤如下: 1.去Tomcat官网下载最新的源码包(version:10.0.4):https://tomcat.apache.org/download-10.cgi 2.本地解压后,通过...
  • 不,WebLogic绝对不是开源的,从来没有,也不会.它是由Oracle开发的应用程序服务器(即使它最初是BEA的产品,由Oracle收购 – 现在它已经很久了,我们可以说它真的是Oracle产品).Oracle WebLogic Server(WLS)是Oracle(SOA ...
  • JavaWeb——Tomcat

    2021-04-21 14:08:59
    tomcat学习记录
  • 所以很多人觉得apache tomcat就是一个web 服务器程序,并且大多数情况下,直接简称为apache, 接下来也会有这个疑问:apache是用什么语言来开发的?java, c , c++, php, perl?在回答这个问题之前,首先要了解...
  • Tomcat概述

    2021-06-10 10:24:57
    文章目录一、Tomcat简介(1)Tomcat概述(2)Tomcat和Apache的比较(3)Tomcat同类产品(4)Tocmat和JDK的关系(5)Tomcat和JDK版本对应图二、Tomcat工作原理(1)Tomcat整体架构(2)Container组件详解:(3)...
  • Tomcat是一款免费且开源的web应用服务器,是Apache软件基金会的一个核心开源项目,属于轻量级应用服务器。其开源、占用系统资源少、跨平台等特性深受java开发人员喜爱,是java开发人员的首选。 Tomcat三大核心组件 ...
  • Java:Tomcat是什么

    2021-04-11 09:57:25
    Java:Tomcat是什么 1. 下载Tomcat 官网:apache-tomcat-9.0.41 安装地址:C:\Environmental\apache-tomcat-9.0.41 2. 配置环境变量 第一步,在系统环境变量中添加两个变量 变量名:CATALINA_HOME 变量值:C:\...
  • 它是一款免费的,开源的web应用服务器,是Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目 由Apache、Sun和一些公司及个人共同开发而成,深受Java爱好者的喜爱,并得到部分软件开发商的...
  • 不想经常打包部署,而想让WEB应用能直接Run As,Tomcat提供tomcat-embed-core-7.0.42.jar,故可以嵌入Tomcat。在Maven配置文件中添加如下的配置文件:org.apache.tomcattomcat-catalina7.0.42org.apache.tomcattomcat-...
  • 文章目录企业 Tomcat 运维Tomcat好帮手---JDK2、安装 JDK安装Tomcat部署一个机器三个tomcatWEB站点部署jenkins部署开源站点(jspgou商城) 企业 Tomcat 运维 使用方案: 方案一: Tomcat //单独使用 ----基本不用 ...
  • 文章目录Alpha/Beta/StableApacheTomcat9.xApacheTJava Apache Tomcat是一个开源软件实现了Java Servlet和Java Server Pages技术。不同版本的Servlet和JSP规范可使用不同版本的Apache TomcatTomcat与JDK版本对应...
  • 最近在做一些技术管理的工作,在技术规范中会涉及到开源协议,参考一下这篇文章介绍的几种常见的开源协议,例如,GPL、BSD、MIT、Mozilla、Apache和LGPL等,P.S.htt...
  • 我当初其实也很迷茫,在我印象中,服务器应该是冷冰冰的大铁柜,在恒温恒湿的机房里待着,所以Tomcat是什么呢,为什么也叫服务器呢?贴一篇旧文,希望能解答疑惑~Tomcat学艺Tomcat,熟悉的陌生人。我们所有的项目都...
  • 以前没有用过 weblogic 服务器,只用过 tomcat 服务器,可能是由于没有涉及到什么复杂的系统,哈哈,虽然没有用过,但还是得了解下这个东东到底是干什么用的。在网上查些资料,在这记录下区别。 二、J2EE概念: ...
  • JVM和Tomcat的关系

    2021-03-06 21:25:55
    最近在做微服务部署相关的项目,使用的容器为汤姆猫tomcat,过程中通过和架构师的交流以及...2、Tomcat,apache免费开源的web应用服务器,通过java语言编写,换句话说:tomcat亦是一个java应用程序。-------- 这里...
  • tomcat服务器

    2021-01-16 19:56:21
    Tomcat介绍 Tomcat开源的 通过tomcat,我们可以得到一个本地网址http://localhost:8080,这个网址只是一个本地连接,但是通过tomcat,外网可以访问http://localhost:8080。 3. Tomcat安装和启动 JAVA_HOME环境...
  • Tomcat详细简介

    2021-04-18 14:04:44
    Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。 二、原理 Tomcat结构图: Tomcat主要组件:服务器Server,服务Service,连接器...
  • 简介Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开...
  • Tomcat介绍1.1 关于服务器1.2 Tomcat下载与安装1.3 Tomcat各版本所需支持1.4 Tomcat目录结构详解2. Tomcat基本使用2.1 Tomcat启动和停止及问题分析解决1). 启动和停止2)启动问题2.2 IDEA集成Tomcat服务器2.3 Linux...
  • tomcat轻量级服务器

    2021-10-21 10:02:23
    Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。 2.tomcatl优点 Tomcat 技术...
  • 学习设计模式最好的方式就是,看看开源的源码框架中是怎么用的。 模板方法模式,非常之简单,记住两点:代码复用和功能扩展。
  • 三、Tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 1、apache和nginx Apache和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,748
精华内容 43,099
关键字:

tomcat是开源的吗