源码分析
猴哥_IT小菜鸟
三分天注定七分靠打拼 爱拼才会赢
展开
-
Spring 3 MVC深入研究
一、前言:大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。官方的下载网址是:http://www.springsource.org/download (本文使用是的spring 3.0.5版本)Struts2也是比较优秀转载 2017-02-08 17:56:55 · 215 阅读 · 0 评论 -
Tomcat架构分析之Connector NIO 实现
上篇介绍的connector是基于BIO的实现。除了BIO外,也可以通过配置快速部署NIO的connector。在server.xml中如下配置; Xml代码 <Connector port=“80” URIEncoding=“UTF-8” protocol=“org.apache.coyote.http11.Http11NioProtocol” connec转载 2017-02-08 18:12:28 · 492 阅读 · 0 评论 -
Tomcat架构分析之Connector BIO 实现
在tomcat架构分析中已经介绍过,connector组件是service容器中的一部分。它主要是接收,解析http请求,然后调用本service下的相关servlet。由于tomcat从架构上采用的是一个分层结构,因此根据解析过的http请求,定位到相应的servlet也是一个相对比较复杂的过程。 整个connector实现了从接收socket到调用servlet的全部过程。先来看一下con转载 2017-02-08 18:13:26 · 261 阅读 · 0 评论 -
Tomcat架构分析之Session管理
Session管理是JavaEE容器比较重要的一部分,在app中也经常会用到。在开发app时,我们只是获取一个session,然后向session中存取数据,然后再销毁session。那么如何产生session,以及session池如何维护及管理,这些并没有在app涉及到。这些工作都是由容器来完成的。 Tomcat中主要由每个context容器内的一个Manager对象来管理session。对于这转载 2017-02-08 18:14:25 · 977 阅读 · 0 评论 -
Tomcat架构分析之Container容器
Tomcat提供了engine,host,context及wrapper四种容器。在总体结构中已经阐述了他们之间的包含关系。这四种容器继承了一个容器基类,因此可以定制化。当然,tomcat也提供了标准实现。Engine:org.apache.catalina.core.StandardEngineHost: org.apache.catalina.core.StandardHostContex转载 2017-02-08 18:15:18 · 2630 阅读 · 1 评论 -
tomcat架构分析之Valve机制
关于tomcat的内部逻辑单元的存储空间已经在相关容器类的blog里阐述了。在每个容器对象里面都有一个pipeline及valve模块。它们是容器类必须具有的模块。在容器对象生成时自动产生。Pipeline就像是每个容器的逻辑总线。在pipeline上按照配置的顺序,加载各个valve。通过pipeline完成各个valve之间的调用,各个valve实现具体的应用逻辑。 先看一下pipeline及转载 2017-02-08 18:16:10 · 425 阅读 · 0 评论 -
Tomcat源码分析之Connector
在客户端访问tomcat的时候有一层叫做connector的东西,这其实是处理来自于客户端的协议,左边的coyote connector是对HTTP/1.1协议处理,右边的jk connector是对AJP/1.3协议做处理。以下就针对coyote connector做一下源代码分析。 对上面的类图做一下简单说明:JIoEndpoint:提供监听线程Acceptor接受socket并且创建一个转载 2017-02-08 18:17:50 · 263 阅读 · 0 评论 -
Tomcat 源码学习之JIoEndpoint
本来想自己写的,结果在网上找到别人写的,概括的非常详细,就直接转过来了: Tomcat中提供了多种处理Socket的实现:JIoEndpoint、AprEndpoint和NioEndpoint。其中JIoEndpoint是最常见的一种实现方式。 JIOEndpoint中的线程有3部分:Socket侦听线程、监控线程和Executor。 Socket侦听线程该线程由内部类Acceptor转载 2017-02-08 18:29:22 · 893 阅读 · 0 评论 -
Tomcat 工作原理
1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet Container. (Singleton)1.2 - Service A Service element represents the combination of one or more Connector转载 2017-02-08 18:30:17 · 232 阅读 · 0 评论 -
Jetty 源码分析
一、 总括 你了解Jetty 吗,就像我们所熟知的Tomcat一样, Jetty是一个免费的开放源码的100%纯Java的Http服务器和Servlet容器。 Jetty具备以下特点: 快速高效 。Jetty是最快的Servlet服务器之一 。Jetty可以处理上千个并发连接 小巧嵌入 。Jetty的jar只有600多K转载 2017-02-08 18:31:01 · 3439 阅读 · 0 评论 -
Tomcat架构分析概览
Service中配置了实际工作的Engine,同时配置了用来处理业务的线程组Executor(如果没有配置则用系统默认的WorkThread模式的线程组),以及处理网络socket的相关组件connector。详细情况如图所示。 图中,1:n代表一对多的关系;1:1代表一对一的关系。 StandEngine, StandHost, StandContext及StandWrapper是容器,他们转载 2017-02-08 18:11:44 · 210 阅读 · 0 评论 -
Tomcat6整体结构
1 ServerTomcat server实例,需提供接口让其它程序能够访问到其中 Service 集合,同时要维护它所包含的所有 Service 的生命周期,包括如何初始化、如何结束服务、如何找到别人要访问的 Service。2 ServiceService 只是在 Connector 和 Container 外面多包一层,把它们组合在一起,向外面提供服务,同时通过lifecycle接口管理转载 2017-02-08 18:10:50 · 242 阅读 · 0 评论 -
Tomcat6核心类结构分析
1. tomcat整体结构2. tomcat核心类结构图3. tomcat启动过程主线图4. tomcat请求处理类结构图5. Container容器类结构图6. Pipeline和Valve机制转载 2017-02-08 18:09:50 · 257 阅读 · 0 评论 -
Spring MVC请求处理流程及源码分析
从接受请求到返回响应,spring MVC框架的众多组件都伸胳膊挽袖子行动起来,各司其职,有条不紊地完成份内的工作。在整个框架中,DispatcherServlet处于核心的位置,它负责协调和组织不同组件,共同完成请求响应的工作。和大多数Web MVC框架一样,Spring MVC通过一个前端Servlet处理器接收所有的请求,并将具体工作委托给其它组件进行具体的处理,DispatcherServl转载 2017-02-08 17:57:44 · 265 阅读 · 0 评论 -
Struts2请求处理流程及源码分析
1. 一个请求在Struts2框架中的处理步骤:a) 客户端初始化一个指向Servlet容器的请求;b) 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成 很有帮助(SiteMesh Plugin),主要清理当前线程的ActionContext和Dispatcher;c) 请求经过插件过滤器,如:S转载 2017-02-08 17:58:31 · 162 阅读 · 0 评论 -
Tomcat Connector组件
Tomcat Connector组件Tomcat Connector是Tomcat中的一个重要的组件,它负责监听到达Tomcat的请求,并将这些 请求转换成Servlet规范中所定义的Request,然后将转换后的请求交给Engine组件去处理,最后将Engine返回的Response返回给客户端。1.Connector组件的主要请求处理类以及它们的功能这篇在了解Connector组件的大致功转载 2017-02-08 17:59:52 · 247 阅读 · 0 评论 -
Tomcat Engine组件
Tomcat Engine组件Tomcat Engine组件是一个职责相当简单的组件,他的主要作用就是决定从Connecter过来的请求应该交给哪一个Host来处理。在本文中,我们将会简单介绍下Tomcat的Engine组件的功能,backgroundProcess()方法,以及和Engine组件相关的几个Valve。一、Engine组件的主要功能在之前的学习中,我们已经了解到,Tomcat的转载 2017-02-08 18:00:43 · 298 阅读 · 0 评论 -
Tomcat Host组件
Tomcat Host组件Tomcat Host组件在Tomcat中代表一个“Virtual Host”,使Tomcat可以在单个Tomcat实例中支持多个“Virtual Host”,这样,我们也就可以知道一个Engine可以包含多个Host组件。Host组件包含两个主要的Valve,一个Valve决定请求由哪一个Context处理,另一个Valve负责处理在Context中未被捕获的异常。除了转载 2017-02-08 18:01:22 · 321 阅读 · 0 评论 -
Tomcat Wrapper组件
Tomcat Wrapper组件一些基本概念1、ServletContext:作用:表示一个web应用的上下文;可以想象成一个Web应用程序的共享数据区域,该区域保存该Web应用程序的共享数据;生命周期:每个Web应用程序都对应一个ServletContext,保存在Context中,在Context初始化时创建,Context撤销时销毁;2、servlet-mapping:作用:按ur转载 2017-02-08 18:02:02 · 218 阅读 · 0 评论 -
Apache、Nginx 、Lighttpd性能比较
1. web服务器简介1. lighttpd Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的Web server环境 Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持Fast转载 2017-02-08 18:04:23 · 639 阅读 · 0 评论 -
深入浅出异步I/O模型
从上篇文章的介绍我们知道Linux内核根据TCP/IP网络模型,给我们隐藏了传输层以下的网络传输细节,我们的网络应用程序只需要针对socket编程即可。这篇我们立足网络数据包的I/O。谈谈linux的一些I/O知识,以及Java的NIO. 1. 基础知识 我们知道Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件转载 2017-02-08 18:05:59 · 288 阅读 · 0 评论 -
Jetty 核心架构分析
Jetty Server是由一组接受Http连接的Connectors和一组处理来自连接的请求并响应的Handlers构成的,其工作是通过取自线程池中的线程来完成的。Jetty的实现遵循一些标准的模式,大部分的抽象概念通过接口捕获的,比如Connector,Handler,Buffer。这些接口的通用处理通过抽象类来实现,比如AbstractConnector,AbstractHandler。从J转载 2017-02-08 18:07:03 · 319 阅读 · 0 评论 -
Tomcat集群Cluster实现原理剖析
org.apache.catalina.tribes.transport.ReceiverBase bind信息: Unable to bind server socket to:/192.168.137.3:4099 throwing error.2011-8-2 19:59:25 org.apache.catalina.tribes.transport.nio.NioReceiver sta转载 2017-02-08 18:31:51 · 411 阅读 · 0 评论