加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

发布时间:2019-11-27 18:11:58 所属栏目:系统 来源:站长网
导读:副标题#e# Tomcat是开源的 Java Web 应用服务器,实现了 Java EE 的部分技术规范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 Sun 公 司为企业级应用推出的标准平台,定义了一系列用于企业级开发的技术规范。除了上述的之外,

Acceptor线程负责接收连接,调用accept方法阻塞接收建立的连接,并对socket进行封装成PollerEvent,指定注册的事件为op_read,并放入到EventQueue队列中,PollerEvent的run方法逻辑的是将Selector注册到socket的指定事件;

Poller线程从EventQueue获取PollerEvent,并执行PollerEvent的run方法,调用Selector的select方法,如果有可读的Socket则创建Http11NioProcessor,放入到线程池中执行;

CoyoteAdapter是Connector到Container的适配器,Http11NioProcessor调用其提供的service方法,内部创建Request和Response对象,并调用最顶层容器的Pipeline中的第一个Valve的invoke方法;

Mapper主要处理http url 到servlet的映射规则的解析,对外提供map方法。

NIO Connector主要参数

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

Comet

Comet是一种用于web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求;

在WebSocket出来之前,如果不适用comet,只能通过浏览器端轮询Server来模拟实现服务器端推送;

Comet支持servlet异步处理IO,当连接上数据可读时触发事件,并异步写数据(阻塞)。

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

Tomcat要实现Comet,只需继承HttpServlet同时,实现CometProcessor接口。

Begin:新的请求连接接入调用,可进行与Request和Response相关的对象初始化操作,并保存response对象,用于后续写入数据

Read:请求连接有数据可读时调用

End:当数据可用时,如果读取到文件结束或者response被关闭时则被调用

Error:在连接上发生异常时调用,数据读取异常、连接断开、处理异常、socket超时

Note:

Read:在post请求有数据,但在begin事件中没有处理,则会调用read,如果read没有读取数据,在会触发Error回调,关闭socket

End:当socket超时,并且response被关闭时也会调用;server被关闭时调用

Error:除了socket超时不会关闭socket,其他都会关闭socket

End和Error时间触发时应关闭当前comet会话,即调用CometEvent的close方法

Note:在事件触发时要做好线程安全的操作

异步Servlet

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

传统流程:

首先,Servlet 接收到请求之后,request数据解析;

接着,调用业务接口的某些方法,以完成业务处理;

最后,根据处理的结果提交响应,Servlet 线程结束。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读