描述 Tomcat 服务器的架构及其工作原理。

Tomcat 是一个开源的 Java Servlet 容器,适用于在生产环境中部署和执行 Java Web 应用。它是由 Apache 软件基金会开发和维护的。Tomcat 服务器的架构分为几个核心组件,其中包括 Catalina、Coyote 和 Jasper。

  1. Catalina: 这是 Tomcat 的 Servlet 容器,它实现了 Servlet 和 JSP 规范。Catalina 负责管理 Servlet 的生命周期,处理 HTTP 请求。
  2. Coyote: 这是 Tomcat 的 HTTP 连接器,它所承担的任务是从客户端接收请求并将其交给 Catalina 进行处理,然后将响应返回给客户端。
  3. Jasper: 这是 Tomcat 的 JSP 引擎,用于将 JSP 转换为 Servlet 并进行编译和执行。

请求处理流程:

  1. 请求到达 Coyote HTTP 连接器。
  2. Coyote 创建一个合适的 Request 和 Response 对象,然后将其传递给 Catalina 进行处理。
  3. Catalina 根据请求 URL,找到相对应的 Servlet,通过包括生命周期管理来处理请求,生成响应。
  4. 最后,响应通过 Coyote 返回到客户端。

描述在 Tomcat 中如何配置数据源连接池。

在 Tomcat 中配置数据源连接池是一项常见的任务,它能够提高数据库连接的管理效率,提升应用性能。具体步骤如下:

1)首先,你需要将 JDBC 驱动包放置到 Tomcat 服务器的 lib 目录下。比如,如果你使用的是 MySQL 数据库,那么你需要下载 MySQL Connector/J 并将其放入 TOMCAT_HOME/lib 目录。

2)接着,编辑 Tomcat 的全局配置文件 context.xml 或者是具体应用的 context.xml 文件。在这里配置你的数据源。以下是一个配置示例:

<Context>
<Resource name="jdbc/MyDB"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
maxWaitMillis="10000"
username="yourUsername"
password="yourPassword"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/yourDatabase"/>
</Context>

在这个配置中:

  • name 是数据源的名称。
  • auth 通常为 “Container”。
  • type 表示这是一个数据源(javax.sql.DataSource)。
  • maxTotal 是连接池的最大连接数。
  • maxIdle 是连接池中最大空闲连接数。
  • maxWaitMillis 是获取连接的最大等待时间。
  • usernamepassword 是数据库的用户名和密码。
  • driverClassName 是 JDBC 驱动的类名。
  • url 是数据库的连接 URL。

3)在你的 Java 应用程序中,通过 JNDI 查找数据源。如下示例:

Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/MyDB");
Connection conn = ds.getConnection();
// ... use this connection to interact with your database

Spring Boot中内置Tomcat最大连接数、线程数与等待数

Spring Boot应用中Tomcat建议配置

Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改。要了解具体参数的默认值,一个简单的方法是在application.properties 配置文件中输入配置项,默认值就会显示出来。

最大工作线程数,默认200。
server.tomcat.max-threads=200

最大连接数默认是10000
server.tomcat.max-connections=10000

等待队列长度,默认100。
server.tomcat.accept-count=100

最小工作空闲线程数,默认10。
server.tomcat.min-spare-threads=100