其他分享
首页 > 其他分享> > Tomcat服务器学习笔记

Tomcat服务器学习笔记

作者:互联网

首先展现一个图:

在这里插入图片描述

这就是Tomcat服务器的内部结构,最顶层的容器是Server,代表着整个服务器,整个 Tomcat 的生命周期由Server 控制,一个 Server 至少包含一个 Service(至于最多可以包含多少个 Service,一是看 Tomcat 本身的配置,二是看服务器的硬件配置是否能承载得了)

Service 又包含两个主要的部分:Connector 和 Container,这两个组件是 Tomcat 的心脏

Connector 用于接受请求并将请求封装成 Request 和 Response

Container 用于封装和管理 Servlet,以及处理具体的 Request 请求

接下来先说一下怎样部署一个项目:使用tomcat部署一个war包:

首先讲解一下怎样将一个项目打包成war包:

如果是一个maven项目:只需要在pom.xml里面加入:

  <modelVersion>4.0.0</modelVersion>
  <packaging>war</packaging>
  <name>MobilPhone</name>
  <groupId>org.example</groupId>
  <artifactId>MobilPhone</artifactId>
  <version>1.0-SNAPSHOT</version>

然后:

请添加图片描述

如果这不是一个maven项目:

1:使用快捷键Ctrl+Alt+Shift+s 或者 鼠标点击选中项目名按F4 打开 Project Structure界面

在这里插入图片描述

2:选择Artifacts,点击右边+,依次选择Web Application:Archive 和 For ‘myPro:war exploded’

在这里插入图片描述

3:[修改名称:可选] 和 注意 war输出的路径

在这里插入图片描述

4:点击下图红色箭头所指+图标,选择Directory Content,添加你的WebRoot目录,然后点击OK

在这里插入图片描述

5:在主界面选择Build – Build Artifacts,找到刚才需要打包的项目名点击build

在这里插入图片描述

部署项目的方式:

1:将项目打出的 war 包直接放到 tomcat/webapps 目录下,那么当 Tomcat 启动时,会自动将 .war 包解压

2:在 conf/context.xml 中进行独立的配置,可以增加如下元素:,启动 Tomcat 后,在浏览器中输入 http://localhost:8080/project/ 就能访问项目了。

请添加图片描述

3:在 Tomcat 中创建 conf/Catalina/localhost 目录,用项目名新建一个 xml 文件,例如 project.xml,然后在 project.xml 中加上类似于第二种方式的内容:<ContextdocBase="/usr/local/project" reloadbale=“true”>,启动 Tomcat 后,在浏览器中输入http://localhost:8080/project/ 就能访问项目了。

请添加图片描述

知识点讲解:网上有很多说第二种部署方法不是在 conf/context.xml 中而是在server.xml中的标签下面,下面简单讲解一下:

在tomcat 5.5之前:Context体现在/conf/server.xml中的Host里的元素,它由Context接口定义。每个元素代表了运行在虚拟主机上的单个Web应用。

元素:<Context path="/kaka" docBase="kaka" debug="0" reloadbale="true">

2. 在tomcat 5.5之后:

不推荐在server.xml中进行配置,而是在/conf/context.xml中进行独立的配置。因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

元素:

<Context path="/kaka" docBase="kaka" debug="0" reloadbale="true" privileged="true">  
  
<WatchedResource>WEB-INF/web.xml</WatchedResource>  
  
<WatchedResource>WEB-INF/kaka.xml</WatchedResource> 监控资源文件,如果web.xml || kaka.xml改变了,则自动重新加载改应用。  
  
<Resource name="jdbc/testSiteds" 表示指定的jndi名称  
    auth="Container" 表示认证方式,一般为Container  
    type="javax.sql.DataSource"  
    maxActive="100" 连接池支持的最大连接数  
    maxIdle="30" 连接池中最多可空闲maxIdle个连接  
    maxWait="10000" 连接池中连接用完时,新的请求等待时间,毫秒  
    username="root" 表示数据库用户名  
    password="root" 表示数据库用户的密码  
    driverClassName="com.mysql.jdbc.Driver" 表示JDBC DRIVER  
    url="jdbc:mysql://localhost:3306/testSite" /> 表示数据库URL地址  
  
</Context>

context.xml的三个作用范围:

在/conf/context.xml里配置。

在/conf/Catalina/${hostName}里添加context.xml,继而进行配置。

在/conf/Catalina/ h o s t N a m e 里 添 加 {hostName}里添加 hostName里添加{webAppName}.xml,继而进行配置。

给 Tomcat 新增用户,实现输入用户名和密码进入应用管理界面:

打开 conf 目录下的 tomcat-users.xml,添加一行:<user username= "root" password= "root" roles="manager-gui"/>

请添加图片描述
请添加图片描述

禁用AJP:

修改conf下的server.xml文件,将AJP服务禁用掉即可

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

禁用前:

请添加图片描述

请添加图片描述

禁用后:

请添加图片描述
请添加图片描述

禁用后还可以访问

知识讲解:Tomcat HTTP协议与AJP协议

Tomcat在server.xml中配置了两种连接器。

HTTP Connector

拥有这个连接器,Tomcat才能成为一个web服务器,但还额外可处理Servlet和jsp。

AJP Connector

AJP连接器可以通过AJP协议和另一个web容器进行交互。

<!-- Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。

第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。AJP连接器可以通过AJP协议和一个web容器进行交互。

Web客户访问Tomcat服务器的两种方式:

在这里插入图片描述

AJP13是一个二进制的TCP传输协议,相比HTTP这种纯文本的协议来说,效率和性能更高,也做了很多优化。显然,浏览器并不能直接支持AJP13协议,只支持HTTP协议。所以实际情况是,通过Apache的proxy_ajp模块进行反向代理,暴露成http协议给客户端访问,主要应用场景就是动静分离时,两个服务器之间通信使用。

支持AJP协议的代理服务器可以用这种做法,但是支持AJP代理的服务器非常少,比如目前很火爆的Nginx就没这个模块。因此tomcat的配置大部分都是关闭AJP协议端口的,因为除了Apache之外别的http server几乎都不能反代AJP13协议,没太大用处了

标签:xml,Tomcat,AJP,笔记,conf,服务器,war
来源: https://blog.csdn.net/justleavel/article/details/121744267