Java Web 深入分析(7) Jetty原理解析

时间:2023-03-09 04:08:53
Java Web 深入分析(7) Jetty原理解析

1Jetty的基本架构

Jetty有一个基本的数据模型,这个模式就是handle,所有拷贝拓展的组件都被当做一个handler被添加到server中,然后由jetty统一管理。

1.1Jetty基本架构简介

如图Jetty核心是由Server和Connector两个组件构成的,整个jetty是基于handle容器工作的,它类似tomcat的Connector容器;

Java Web 深入分析(7) Jetty原理解析

如图,jetty还有其他一些可有可无的组件构成,可以在其上面拓展,这也是jetty受欢迎的原因吧。如JMX(Java Management Extensions,即Java管理扩展) 我们可以把自己的MBean 加入到Server中,当server启动时这些类便会跟着启动.

图中可看出jetty主要是围绕server来构建 ,server类继承handler,并关联了Container和connector,container就是MBean的管理容器,mbean 被看做一个个handler被配进server中,由server提供调用规则。

Java Web 深入分析(7) Jetty原理解析

MBean(描述一个可管理的资源。是一个java对象,遵循以下一些规则:1.必须是公用的,非抽象的类 2.必须有至少一个公用的构造器 3.必须实现它自己的相应的MBean接口或者实现javax.management.DynamicMBean接口4.可选的,一个MBean可以实现javax.management.NotificationBroadcaster接口MBean的类型)

如图jetty所有组件的生命周期的管理都是基于观察者模式设计的,这个类似tomcat不过更简单

Java Web 深入分析(7) Jetty原理解析

如图jetty主要是基于handle来设计

Java Web 深入分析(7) Jetty原理解析

2Jetty启动过程

2.1接受请求: HTTP 和AJP

2.1.1HTTP

Java Web 深入分析(7) Jetty原理解析

Java Web 深入分析(7) Jetty原理解析

2.1.2AJP

通常一个应用服务器不是直接将Java后台服务直接暴露给访问者,而是如图这种结构。

Java Web 深入分析(7) Jetty原理解析

和HTTP对比最大的区别点在于Ajp13SocketConnector替代了 SocketConnector,表示当前连接使用AJP.

Java Web 深入分析(7) Jetty原理解析

Java Web 深入分析(7) Jetty原理解析

AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接 和 SERVLET容器连接。