`
bozhi521
  • 浏览: 9376 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jetty 架构

阅读更多

                                                                             Jetty 6 架构

原文:Jetty 6 Architecture

概括:

jetty架构

Jetty server是由一组接受http连接的Connectors和一组处理来自连接的请求并作出响应的Handlers构成的,其工作是通过取自线程池中的线程来完成的。

 

注意:虽然jettyrequest/responses是从Servlet api传递来的,但是要获得全功能的servlet api必须配置适当的handler。比如:在request中的session api只有在request传递给了SessionHandler之后才可用。Servlet概念本身是由ServletHandler实现的。如果servlets不是必须的,servlet api很少使用。因此,jetty可以通过简单的connectiorshandlers构建,而不需要servlets

 

Jetty的配置工作就是构建一个connectors和handlers的网络,并提供他们单独的配置。因为jetty组件就是简单的POJO,这种组件的配置可以通过多种技术实现:

Ø         在代码中实现, 可以查看org.mortbay.jetty.example包中的例子。

Ø         使用jetty.xml-xml格式的依赖注入风格

Ø         使用依赖注入框架:Spring或Xbean

Ø         使用Deployers:WebAppDeployer, ContextDeployer

 

 

模式

Jetty的实现遵循一些标准的模式,大部分的抽象概念通过接口捕获(captured)的,比如Connector,Handler,Buffer。这些接口的通用处理通过抽象类来实现,比如:AbstractConnector, AbstractHandler and AbstractBuffer

从JSR77的生命周期得到灵感,大部分的jetty组件是通过LifeCycle接口呈现的,其抽象实现(AbstractLifeCycle)是大部分jetty组件的基础。

Jetty提供了自己的建立在String,byte数组和nio缓冲之上的IO buffer的抽象。这样得到更好的可移植性,并且也隐藏了一些nio层和它的高级特性的复杂性。

 

Connectors

Connectors进行协议的处理:接受连接,分析请求,生成响应。基于使用的协议,调度模型,io api的不同,有多中可用的connector:
SocketConnector – 用于繁忙的连接或是nio不可用的场合
BlockingChannelConnector -用于繁忙的连接,并且nio可用
SelectChannelConnector – 用于大部分时间空闲的连接或者ajax请求的异步处理
SslSocketConnector – SSL,并且NIO不可用
SslSelectChannelConnector - SSL ,并且支持非阻塞的NIO
AJPConnector - AJP 协议支持,用于来自apache mod_jk or mod_proxy_ajp的连接

Handlers

Handler是用来处理接收到的请求的组件。Handler的核心api是handle方法:
public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch)
throws IOException, ServletException;

该方法的实现中,必须处理请求,将请求传递到另一个handler(或servlet),或者是改变和(或)包装请求之后再传递出去。这里给出三种风格的Handler:
协调处理器 – 将请求传递给其他的handlers (eg HandlerCollection, ContextHandlerCollection)
过滤处理器 – 对请求进行包装后再传递给其他的handler (eg. HandlerWrapper, ContextHandler, SessionHandler)
生成处理器 – 生成内容(eg ResourceHandler and ServletHandler)

另见: Writing a Jetty Handler。
Servlets

      

ServletHandler是一个生成内容(content)的Handler,通过将请求传递给任何配置的过滤器(Filters),然后再传递给通过url patten映射到的Servlet

ServletHandler通常部署在Servlet上下文(Context)中。Servlet上下文是一个ContextHandler,包含有方便的从url映射到servlet的方法。

Filters和servlets也可以在当前的上下文中使用RequestDispatcher将请求发送到其他的context或是servlet。

Context

Context 是用于将其他handler分组在特定的URL 上下文路径或者虚拟主机之下的handler。通常一个context包含:
一个上下文路径( context path)用来定义什么请求会被context处理 (eg /myapp )
一个资源根路径(resource base)用来提供静态内容 (eg: docroot)
一个类载入器,用于载入特定于conext的类 (通常: docroot/WEB-INF/classes)
虚拟主机名

Context的实现包括:
ContextHandler
Servlet Context
Web Application Context.

web application context 将security, session and servlets handler组合进一个单独的单元中,可以通过web.xml的描述符进行的配置。
Web Applications


WebAppContext是servlet 上下文的延伸,支持标准的web程序布局和通过web.xml的描述符进行的session,security,listeners,filter,servlet和jsp的配置

本质上,WebAppContext是一个帮助其他handler构建和配置,以完成标准webapp配置的方便的类

配置实际上是通过可插拔的Configuration 类来实现的,其中最首要的是WebXmlConfiguration

  • 大小: 4.7 KB
  • 大小: 12.5 KB
  • 大小: 16.5 KB
  • 大小: 18.9 KB
  • 大小: 16.7 KB
  • 大小: 10.8 KB
分享到:
评论

相关推荐

    Jetty 学习资料汇总

    2. **Jetty架构**:Jetty采用模块化设计,包括HTTP服务器、WebSocket服务器、HTTP客户端等多个组件,用户可以根据需要选择加载。 3. **安装与配置**:介绍如何下载Jetty,设置环境变量,以及配置Jetty启动参数。 4...

    jetty6 指南书

    6. **Jetty架构**: - **Connector**:负责网络连接和协议处理,如HTTP/HTTPS。 - **Handler**:处理请求的组件,可以自定义实现特定的Web服务逻辑。 - **Server和ThreadPool**:管理服务器的运行和线程池的配置...

    jetty-6.1.14.zip

    1. **Jetty架构** Jetty采用模块化设计,由一系列可插拔组件构成,如HTTP服务器、Servlet容器、WebSocket服务器等。这种设计使得Jetty能够灵活配置,只加载实际应用需要的组件,从而降低资源消耗。 2. **Servlet...

    jetty-distribution-9.4.12.v20180830

    - **Jetty架构**:Jetty采用事件驱动、非阻塞I/O模型,这种架构对于高并发场景非常有利,降低了系统的资源消耗,提高了响应速度。 - **微服务架构**:在微服务架构中,每个服务都可能需要自己的Web服务器,Jetty的...

    jetty 嵌入式开发源码

    1. **Jetty架构概述** Jetty采用模块化设计,主要包括Server、Connector、Handler和Servlet等组件。Server是整个框架的核心,负责管理Connectors和Handlers;Connectors负责网络I/O,如HTTP连接;Handlers处理请求...

    容器jetty

    1. **Jetty架构与特性** - **模块化设计**:Jetty采用模块化设计,允许用户按需选择并加载所需组件,减小了运行时的内存占用。 - **高性能**:Jetty通过非阻塞I/O模型(NIO)和高效的线程管理,提供高并发处理能力...

    Jetty权威指南.pdf

    #### 三、Jetty架构 **3.1 架构概述** Jetty采用了模块化的架构设计,主要包括以下几个核心组件: - **Connector**:负责监听网络连接并接收客户端请求。 - **Handler**:处理请求并生成响应。 - **Server**:...

    Jetty工作原理

    Handler是Jetty架构的核心,它是一种可扩展的组件,任何需要添加的功能都可以作为一个Handler,加入到Server中进行管理。 Jetty的基本架构主要由两个关键组件构成:Server和Connector。Server是基于Handler容器运行...

    jetty指导书

    #### 三、Jetty架构 **3.1 架构概述** Jetty采用了模块化的架构设计,主要包括以下几个核心概念: - **Server**: 整个Jetty的核心,负责协调各个组件的工作。 - **Connectors**: 负责接收客户端的连接请求。 - **...

    Jetty源码分析.pdf

    #### 二、Jetty架构分析 - **总括**:Jetty的核心设计理念在于其简洁高效的架构设计,使得开发者能够在短时间内轻松搭建起Web应用环境。 - **主要组成部分**:Jetty可以大致分为四个主要部分——`HttpServer`、`...

    jetty2016/10最新jar

    1. **Jetty架构**:Jetty采用模块化设计,允许开发者根据需求选择必要的组件,降低了内存占用和启动时间。它支持HTTP、HTTPS、WebSocket等协议,并且能够处理HTTP/1.1和即将推出的HTTP/2。 2. **Servlet容器**:...

    jetty-9.2.9

    1. **Jetty架构**: Jetty采用模块化设计,用户可以根据项目需求选择安装必要的组件,如HTTP服务器、Servlet容器、WebSocket支持等。这种设计使得Jetty在资源消耗和性能上都有优秀的表现。 2. **Servlet支持**: ...

    jetty源码查阅

    1. **Jetty架构** - **Server**:Jetty的核心组件,负责管理多个`Connector`(连接器)和`Handler`(处理器)。`Server`对象启动和停止Jetty服务。 - **Connector**:负责网络通信,如HTTP、HTTPS等,将客户端请求...

    《Jetty6_指南书》

    #### 三、Jetty架构 - **Connector**: 负责接收客户端的请求并发送响应。 - **Handler**: 处理请求的具体逻辑。 - **Server和ThreadPool**: Server管理Jetty的所有组件,ThreadPool管理线程池。 - **目录结构**: ...

    Jetty 核心架构

    ### Jetty核心架构详解 #### 一、容器启动 Jetty作为一个高性能的Web服务器和Java Servlet容器,在启动过程中涉及到了多个关键步骤和技术细节。这部分主要介绍Jetty的启动流程。 ##### 1.1 容器启动 - **Jetty...

    jetty使用文档

    6. **Jetty 架构** - Connector:负责网络通信,如HTTP连接的处理。 - Handler:处理HTTP请求的核心组件,可以自定义Handler实现特定功能。 - Server和ThreadPool:Server是Jetty的核心,而ThreadPool管理线程池...

    应用服务架构及调优

    ##### Jetty架构体系 Jetty是一款轻量级的Web服务器,适用于嵌入式环境。 - **目录结构**: - `bin`:启动脚本。 - `lib`:库文件。 - `conf`:配置文件。 - `webapps`:部署应用程序。 - **启动过程**: 1. ...

    jetty 适合jdk1.8用的服务器

    相较于Apache Tomcat,Jetty以其简洁的架构、高性能和低内存占用而受到开发者青睐。在选择Jetty时,必须考虑到与Java Development Kit (JDK)的兼容性,因为不同的Jetty版本可能会对应不同版本的JDK。 标题提到的...

    jetty整合springmvc例子

    它遵循Model-View-Controller架构模式,帮助开发者分离业务逻辑、数据处理和用户界面。SpringMVC通过DispatcherServlet进行请求分发,并提供一系列高级特性,如数据绑定、异常处理、视图解析等。 3. **整合过程** ...

Global site tag (gtag.js) - Google Analytics