5. TOMCAT学习——TOMCAT的连接器

Tomcat的连接器是如何设计的? 对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。再分享一波我的Java面试真题+视频学习详解+技能进阶书籍《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!与成长,其余的都不重要,希望读者们能谨记这一点。**再分享一波我的Java面试真题+视频学习详解+技能进阶书籍。 阅读详情
  • 概述

    连接器是TOMCAT处理请求的入口,所有请求都是由 连接器 来接收并发起整个请求处理过程。连接器一般与TOMCAT的Service关联。一个Service持有一个或多个连接器。


  • 创建连接器

    TOMCAT启动时会在load阶段根据 server.xml 中的配置创建对应的Connector,相关的配置代码如下:

<Service name="Catalina">
    <Connector port="8080" 
        protocol="HTTP/1.1" 
        connectionTimeout="20000" 
        redirectPort="8443" />
    <Connector port="8009" 
        protocol="AJP/1.3" 
        redirectPort="8443" />
    <!--省略其他内容-->
</Service>

我们来看一下TOMCAT是如何根据配置文件来选择对应连接器的。

/**
 * Coyote Protocol handler class name.
 * Defaults to the Coyote HTTP/1.1 protocolHandler.
*/
//默认的连接器
protected String protocolHandlerClassName =
    "org.apache.coyote.http11.Http11Protocol";

//这里只贴出我们关注的代码
public Connector(String protocol) throws Exception {
    //方法的实现在下面
    setProtocol(protocol);
    // Instantiate protocol handler
    //反射实例化类
    try {
        Class clazz = Class.forName(protocolHandlerClassName);
        this.protocolHandler = (ProtocolHandler) clazz.newInstance();
    } catch (Exception e) {
        log.error(sm.getString
            ("coyoteConnector.protocolHandlerInstantiationFailed", e));
    }
}

public void setProtocol(String protocol) {
    //...省略一些代码
    if ("HTTP/1.1".equals(protocol)) {
        setProtocolHandlerClassName
            ("org.apache.coyote.http11.Http11Protocol");
    } else if ("AJP/1.3".equals(protocol)) {
        setProtocolHandlerClassName
            ("org.apache.jk.server.JkCoyoteHandler");
    } else if (protocol != null) {
        setProtocolHandlerClassName(protocol);
    }
    //如果传入的protocol为null,则使用默认的连接器
    //...省略一些代码
}

从代码中可以看到,TOMCAT在创建Connection 的时候就会根据protocol属性的值选择对应的 protocolHandler 实现类(Connection只是一个容器,真正做处理的是Connection内持有的 protocolHandler )。如果protocol的值在TOMCAT中没有定义,会直接将这个值作为全路径类名来使用。所以将配置稍作修改如下:

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

同样可以启动并处理HTTP请求。

在初始化Connector之后,TOMCAT会将配置文件中Connector标签的其他属性,全都赋予当前的Connector实例。


Http11Protocol 是HTTP连接器的实现,负责处理HTTP请求,是TOMCAT的默认连接器,也是最常用的连接器。

下面我们就以Http11Protocol为例来看看连接器的初始化和调用过程。

  • 连接器的初始化与启动

在这里插入图片描述

连接器的初始化与启动过程如图所示。
1,2,3是连接器的初始化过程。4,5,6,7,8是启动过程。

  1. Connector调用Http11Protocol的init方法
  2. Http11Protocol调用JIoEndpoint的init方法
  3. JIoEndpoint调用ServerSocketFactory的createSocket方法创建一个默认的serverSocket,到这里TOMCAT对网络的监听就已经初始化完成了。
  4. Connector调用Http11Protocol的start方法
  5. Http11Protocol调用JIoEndpoint的start方法
  6. JIoEndpoint初始化一个Acceptor实例
  7. JIoEndpoint将Acceptor作为单独的线程启动
  8. Acceptor启动之后,循环调用ServerSocketFactory的acceptSocket方法,接收并处理网络请求
tomcat连接mysql及JDBC详解 Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。由于有了 Sun 的参与和支持,最新的 Servlet 和JSP 规范总是能在 Tomcat 中得到体现,Tomcat 5 支持最新的 Servlet 2.4 和 JSP 2.0 规范。... 阅读详情

相关推荐

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

一名全栈小白的博客 1万+

Tomcat配置服务器,及连接服务器

(4)如果jdk配置,还是出现闪退现象,编辑startup.bat,最上面添加(shutdown.bat同样添加上)可以随便改,但不能是中文(改完必须 先关闭:shutdown.bat,再运行:startup.bat)4.启动和停止Tomcat(运行:startup.bat,关闭:shutdown.bat)2.由于Tomcat运行需要java,所以安装Tomcat需要之前安装java jdk,打开然后把项目文件拉进去(其他东西尽量不要动)如果运行startup.bat出现闪退现象(创建的文件夹,使用英文)

Ludxig的博客 1193

FPGA加速SNN实现MNIST手写数字识别的实践与优化

脉冲神经网络(SNN)作为第三代神经网络模型,采用生物启发的脉冲事件驱动机制,在处理时序信号时具有天然能效优势。其核心原理是通过神经元仅在接收足够输入脉冲时激活的稀疏特性,大幅降低计算能耗。在FPGA硬件加速领域,SNN通过量化优化、硬件友好型神经元模型设计等关键技术,可在边缘计算场景实现超高能效比。本文以MNIST手写数字识别为案例,详细解析了从6bit量化策略到双缓冲流水线设计的完整优化路径,最终在Xilinx Kintex-7平台实现97.54%识别准确率的同时,功耗仅231mW,能效比达81,712

weixin_30417487的博客 529

tomcat探究三使用连接器(参考tomcat4)

写好测试类后,可以发请求进行测试 http://localhost:8080/servlet/TestControllerServlet。连接器就是管理连接的,可以理解为连接池–现在都是使用这个;HttpRequestFacade – 提供外部操作请求对象。HttpHeader–存储请求头部分的信息,暂时没用到。HttpConnector–连接器,管理请求的。HttpRequestLine–存储请求行信息。HttpProcessor–请求处理。HttpRequest–请求对象。

Myueye的博客 553

ANSYS Workbench接触分析实战:从算法选择到收敛难题破解

本文深入解析ANSYS Workbench接触分析的核心技术与实战技巧,涵盖四大接触算法选择、收敛难题破解秘籍及典型场景参数设置。通过实际案例演示如何优化接触刚度、pinball区域和非对称行为等关键参数,帮助工程师有效解决结构非线性问题,提升仿真效率和精度。

weixin_28705087的博客 360

深度学习十大算法之Word2Vec

Word2Vec的提出,标志着词嵌入技术的一次重大进步。Word2Vec是一种高效的词嵌入模型,由Google的研究团队于2013年开发。它使用一种称为神经网络的机器学习方法,通过学习大量文本数据,生成能够表达词语间丰富语义关系的词向量。Word2Vec的核心优势在于它能够捕捉到词语之间的细微关系。例如,在Word2Vec模型中,可以通过计算向量之间的距离来估计词语之间的相似度。这不仅能帮助理解语言的复杂性,还可以应用于各种NLP任务,如机器翻译和搜索引擎优化。

第欧根尼的酒桶的博客 1864

深入剖析Tomcat(四) 剖析Tomcat的默认连接器

剖析Tomcat的默认连接器

咖啡煮码 1155

Versal ACAP NoC实战:像理解计算机网络一样配置AXI NoC,打通PS与PL数据通路

本文深入探讨了Versal ACAP NoC的配置与优化,通过计算机网络类比解析NoC架构,详细介绍了在VD100开发板上配置AXI NoC实现PS与PL数据交互的实战步骤。文章涵盖NoC组件功能、Vivado配置技巧、性能优化方法及常见问题解决方案,帮助开发者高效打通Versal芯片的数据通路。

weixin_42665255的博客 293

Tomcat(12) Tomcat的连接器(Connector)

连接器是Tomcat中负责处理客户端连接和请求的关键组件。通过在server.xml中配置不同类型的连接器,如HTTP、HTTPS和AJP,你可以根据需要调整Tomcat的网络通信行为。正确配置连接器对于确保Tomcat服务器的高效运行和安全性至关重要。通过上述示例,你可以根据自己的需求调整连接器的配置,以优化性能和安全性。

qq_43012298的博客 1236

GEE:使用 CCDC 算法进行连续变化检测和分类

连续变化检测和分类(CCDC)算法是一种广泛应用于遥感数据分析的方法,可以用于检测土地覆盖变化、农作物生长状态的变化以及水资源的变化等。Google Earth Engine是一个强大的云端平台,提供了丰富的遥感数据和工具,可以用于执行各种类型的遥感数据分析。本文将介绍如何使用Google Earth Engine的CCDC算法进行连续变化检测和分类。

养乐多的博客 5679

Veritas NetBackup8.1.1安装

1.在服务器上运行Browser.exe 2.选中安装,点击"NetBackup Server Software Installation" 3.提示一个”UAC模式”,我们确定忽略它 4.下一步 5.接受授权,下一步 6.自定义安装 7.输入Key,并点击”netBackup Master Server” 8.自定义路径,下一步 9.默认端口,下一步 10.创建内置账户 创建本地用户帐户: C:\>net user nbwebsvc <StrongPassword> /

万物皆可学 2万+

Tomcat配置-学习笔记5---https加密连接器

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34290390的博客 135

YOLOv8改进 | Conv篇 | 利用YOLOv9的GELAN模块替换C2f结构(附轻量化版本 + 高效涨点版本 + 结构图)

本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的GELAN模块来改进YOLOv8中的C2f,GELAN融合了CSPNet和ELAN机制同时其中利用到了RepConv在获取更多有效特征的同时在推理时专用单分支结构从而不影响推理速度,同时本文的内容提供了两种版本一种是参数量更低涨点效果略微弱一些的版本(参数量V8n下降80w,计算量为6.1GFLOPs),另一种是参数量稍多一些但是效果要不参数量低的效果要好一些(均为我个人整理),提供两种版本是为了适配不同需求的读者,具体选择

Snu77的博客 7567

tomcat之连接器

深入学习Java Web服务器系列三一个简单的连接器下面我们来学习tomcat中的连接器。 首先我们先了解一下Catalina的结构图。1. Catalina架构图catalina 就是Tomcat服务器使用Servlet容器的名字。 Tomcat的核心可以分为3个部分: Web容器—处理静态页面; catalina —处理servlet; JSP容器 — jsp页面翻译成一般的servlet

hugua专栏 4688

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Tomcat(103)Tomcat的连接器故障排除

通过以上步骤,可以有效地排除和解决Tomcat连接器的故障。确保连接器的配置正确,端口未被占用,日志文件中没有错误信息,并根据需要调整连接器的参数。如果遇到性能问题,可以考虑使用APR连接器,并通过监控工具进行性能调优。

qq_43012298的博客 785

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Tomcat--Coyote连接器

Coyote连接器 Coyote是Tomcat连接器框架的名称,是Tomcat服务器提供的供客户端访问的外部接口。客户端通过Coyote与服务器建立连接、发送请求并接受响应。 Coyote封装了底层的网络通信(Socket请求及响应处理),为Catalina容器提供了同一的接口,使Catalina容器与具体的请求协议及IO操作方式完全解耦。Coyote将Socket输入转换封装为Request对象...

吴声子夜歌的博客 973

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

tomcat学习(3) 连接器

连接器概述  3.1 概述    tomcat由两大模块组成:连接器和容器。一个支持servlet2.3和2.4规范的连接器必须要负责创建javax.servlet.http.HttpServletRequest和javax.servlet.http.HttpServletResponse实例,并将它们作为参数传递给要调用的某个的servlet的service方法。在第2章中的servlet容器仅...

Dalton2017的博客 356

Tomcat的默认连接器

Tomcat有几个连接器可供选择。 我将把APR连接器放在一边,而将重点放在BIO和NIO上。 BIO连接器(阻塞I / O)正在阻塞–它使用线程池,每个线程在该线程池中接收请求,处理请求,响应并返回到该池。 在阻塞操作期间(例如,从数据库读取或调用外部API),线程被阻塞。 NIO连接器(非阻塞I / O) 要复杂一些 。 它使用java NIO库并在请求之间进行多路复用。 它有两...

最佳 Java 编程 183

如何使用JK2连接器配置Tomcat 5.0.x和IIS 5.0协同工作

2004.5 臧士睿 qq:10743383网络转载请保留作者声明,盈利性印刷刊物转载请联系 zself@vip.cc163.com本文中所有操作都已经在Window2000 Advance Server和Window2000 Professional下测试通过所有内容:New IIS5.0+Tomcat5.0.x HowTo专题讨论区:http://hh.cc163.com/form

EclipseLab 1830

tomcat连接器

连接器是tomcat核心组件之一,负责处理外部连接响应目前连接器支持HTTP/1.1、HTTP/2、AJP三种协议,支持NIO、NIO2、APR三种IO模型。连接器与另一核心组件容器构成service组件,通过配置多个service可实现不同协议不同端口访问。 连接器主要工作流程可分为以下几步: 1.监听端口,接受请求获取网络字节流。 2.解析字节流,生成tomcat request对象。 3.将tomcat reque...

shaofei_huai的博客 864

tomcat-连接器

架构介绍 coyote是tomcat的连接器框架的名称,是tomcat服务器提供的客户端访问的外部接口。客户端通过coyote与服务器建立连接、发送请求并接受响应。 coyote封装了底层的网络通信(socket请求以及响应处理),为Catalina容器提供统一的接口,使Catalina容器与具体的请求协议及IO操作方式完全解耦。coyote将socket输入转换封装为request对象,交...

qq_40807366的博客 318

Tomcat(104)如何在Tomcat中解决连接器错误?

解决Tomcat连接器错误通常涉及检查和调整配置、分析日志、调整连接器参数以及使用更高级的连接器如APR。通过这些步骤,可以有效地解决连接器相关的问题,并提高Tomcat的性能和稳定性。

qq_43012298的博客 621

how tomcat works[4] Tomcat的默认连接器

Tomcat的默认连接器 剖析tomcat4的默认连接器(现在已不再使用,被另一个运行速度更快的Coyote取代)。 Tomcat的连接器必须满足以下要求: 必须实现接口 org.apache.catalina.Connector 必须创建请求对象,该请求对象的类必须实现接口 org.apache.catalina.Request 必须创建响应对象,该响应对象的类必须实现接口 org....

Monkey-yc 202

深入剖析Tomcat(三) 实现一个简易连接器

Tomcat造轮子,给Web服务加个连接器

咖啡煮码 1325

Tomcat 连接器executor优化

tomcat自身优化 Tomcat 的自身参数的优化,修改配置文件中的配置信息,调整连接数,超时等。 1.Connector 连接器的配置 Tomcat连接器的三种方式:bio、nio 和 apr,三种方式性能差别很大,apr 的性能最优, bio 的性能最差。而Tomcat 7 使用的Connector 默认就启用的 Apr 协议,但需要系统安装 Apr 库,否则就会使用 bio 方式。 2.配置文件优化 配置文件优化就是对server.xml进行优化,可以大大提升tomcat请求处理...

小楼一夜听春雨,深巷明朝卖杏花 852
上一篇: 4. TOMCAT学习——TOMCAT的载入器
下一篇: Mysql执行计划——解读Explain
程序猿 M
博客等级 码龄16年 1293粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值