tomcat
holly2k
这个作者很懒,什么都没留下…
展开
-
tomcat解析(-)学习如何写一个servlet服务器
你有没有想过,如果由你来编写一个Servlet服务器,你会怎么写,当然先假定你已经阅读了servlet服务器的规范,知道它应该如何组织自己以及如何对请求做出响应等.对于已有一定j2ee工作经验的人来说(先假定它完全没看到servlet服务器的实现),我想他应该也有一个大概的概念,关于如何编写一个servlet服务器.软件行业的发展最具有深远意义的是开源的产生,因为开源,我们可以学习到其它高手对某一原创 2010-01-22 16:05:00 · 1934 阅读 · 0 评论 -
tomcat解析(十九)对客户请求的处理3
下面是StandardContextValve的invoke方法内容 对于路径中直接访问META-INF或WEB-INF目录下资源的,直接返回404错误 MessageBytes requestPathMB = request.getRequestPathMB(); if ((requestPathMB.startsWithIgnoreCase("/META-INF原创 2010-02-09 18:14:00 · 1074 阅读 · 1 评论 -
tomcat解析(三)bootstrap.load.start
上一篇讲到TOMCAT启动的时候调用了bootstrap.init()方法来初始化一些将要用到的环境变量及对象,其中最重要的是实例化一个org.apache.catalina.startup.Catalina对象,而该对象则负责了后续整个tomcat服务器的启动工作,下面我们继续从Boostrap.main()方法看看在初始化后tomcat服务器是如何启动的.在这里就不再贴出main()方法的内容原创 2010-01-26 18:07:00 · 1250 阅读 · 0 评论 -
tomcat解析(九)StandardServer.initialize.start
在前几篇文章中已说到整个服务器的启动已托管给该类的initialize及start方法,下面我们来看一下这两个方法的内容一.initialize /** * Invoke a pre-startup initialization. This is used to allow connectors * to bind to restricted ports under U原创 2010-01-27 12:58:00 · 1529 阅读 · 1 评论 -
tomcat解析(十一)StandardEngine.start
首先是构造方法: /** * Create a new StandardEngine component with the default basic Valve. */ public StandardEngine() { super(); pipeline.setBasic(new StandardEngineValve());原创 2010-02-02 18:07:00 · 1372 阅读 · 0 评论 -
tomcat解析(十五)StandardContext.start的其它内容
在StandardContext的start()方法里,除了触发相应的LifecycleEvent之外,当然还有其它的处理,下面我们来一一看看其中一些需要了解的内容;1.如果设置了支持JNDI,下面这段代码将为此CONTEXT注册一个监听器if (ok && isUseNaming()) { if (namingContextListener == null) {原创 2010-02-03 18:01:00 · 1209 阅读 · 0 评论 -
tomcat解析(十八)对客户请求的处理2
当我们在web.xml里配置了对系统资源访问的保护后,每次客户端发起访问都需要经过AuthenticatorBase及其子类的校验,大多共用的处理放在AuthenticatorBase中,其它独立于各种校验方式的处理放于其子类中,让我们先看一下AuthenticatorBase中做了哪些事情校验当前用户是否已经经过了校验,并且我们已将其校验通过的通行证明放到了该用户的Session中.原创 2010-02-09 17:20:00 · 1809 阅读 · 0 评论 -
tomcat的JSP处理
众所周知,客户端在访问JSP的时候服务器其实是将其转换为servlet来进行处理的,长久以来,本人对于服务器何时编译生成相应servlet的java文件及class文件备感疑惑,至到最近在网上搜索到相关的信息,因本人对此内容也还未深入研究,这里只做初步介绍。以tomcat为例,在tomcat的conf目录下有一web.xml文件,在其中有如下配置 jsp原创 2010-09-24 23:46:00 · 857 阅读 · 1 评论 -
tomcat解析(二)Bootstrap.init
org.apache.catalina.startup.Bootstrap没有静态块,因此将直接运行其main方法的,main方法如下:/** * Main method, used for testing only. * * @param args Command line arguments to be processed */ public原创 2010-01-22 17:57:00 · 2880 阅读 · 5 评论 -
tomcat解析(十七)Http11Processor
Http11Processor类的构造方法会做一些初始化的动作,但这些内容不在本文讲解范围内,因此这里先不细讲,有兴趣的同志可自已了解一下哈 public Http11Processor(int headerBufferSize, JIoEndpoint endpoint) { this.endpoint = endpoint; request原创 2010-02-08 12:49:00 · 3524 阅读 · 0 评论 -
tomcat解析(十六)对客户端请求的处理
前面我们讲到,或者你也可以在server.xml的注释中看到,Connector类是用于接收用户请求并返回处理结果的,整个服务启动及处理过程均在Connector的start方法里,而其实际的内容在于其挂有的ProtocolHandler对象,启动过程会调用其start方法,该方法又会调用到JIoEndpoint的start方法,该方法如下: public void start()原创 2010-02-03 18:03:00 · 1274 阅读 · 0 评论 -
tomcat解析(四)Catalina.load.start
load该方法内容如下:/* * Load using arguments */ public void load(String args[]) { try { if (arguments(args)) load(); } catch (Exception e) {原创 2010-01-26 18:08:00 · 1722 阅读 · 0 评论 -
tomcat解析(五)Digester(一)
此类用于读取xml文件并根据xml的结构生成相对应的对象结构,可以想象有点象DOM一样的,但主要使用的技术为SAX,即基于事件的XML解析,再配合TOMCAT将对象生成及配置动作进行抽象化(即将相同的东西抽象出来)而成的org.apache.tomcat.util.digester.Rules及其相关类,实现了通过读取配置文件来生成对象并且对对象进行方法调用及属性配置等操作的强大功能,tomcat原创 2010-01-26 18:10:00 · 1470 阅读 · 0 评论 -
tomcat解析(六)Digester(二)startElement
在用SAX对XML进行解析时,需要设置相应的ContentHandler实现,该对象将用于响应各种xml解析的事件,如开始标签时会调用其StartElement方法,遇到标签体时会调用其characters方法,而结束标签会调用其eneElement方法,我们可以看到Digester便是继承了DefaultHandler类,而该类则实现了ContentHandler接口,因此当我们调用digest原创 2010-01-26 18:14:00 · 2159 阅读 · 0 评论 -
tomcat解析(八)Catalina.createStartDigester
在tomcat解析(四)中我们讲到了Catalina的load及start方法启动及准备整个tomcat服务器,而这两个方法最终又将该任务交由server的initialize及start方法处理,该变更将引用Server类的实例,但初始化时为空,因此我们需要该对象实例化过程,而该过程尽在Catalina.load方法的第三步骤里(可看tomcat解析四).首先我们需要了解一下其中的createS原创 2010-01-26 18:16:00 · 2487 阅读 · 1 评论 -
tomcat解析(十)StandardService.initialize.start
先上代码:一.initialize /** * Invoke a pre-startup initialization. This is used to allow connectors * to bind to restricted ports under Unix operating environments. */ public void ini原创 2010-02-02 18:04:00 · 1353 阅读 · 0 评论 -
tomcat解析(十二)StandardHost
首先看构造方法: /** * Create a new StandardHost component with the default basic Valve. */ public StandardHost() { super(); pipeline.setBasic(new StandardHostValve());原创 2010-02-02 20:56:00 · 2261 阅读 · 0 评论 -
tomcat解析(十三)StandardContext
在一个tomcat服务器的生命周期内可以会创建一个或多个StandardContext对象,StandardContext对象代表的是一个具体的工程项目,对应的可以是server.xml里的标签或webapps文件夹下的某一个工程文件夹或war包,也可以对应于conf/Catalina/localhost文件夹下的任一个xml文件里的Context配置,在tomcat中,这些context代表的是原创 2010-02-02 20:59:00 · 2698 阅读 · 1 评论 -
tomcat解析(十四)web.xml解析
对于web.xml文件的解析所使用的Rule为WebRuleSet类,查看其addRuleInstances可得知其设置的具体Rule内容,如下: /** * Add the set of Rule instances defined in this RuleSet to the * specified Digester instance, associating t原创 2010-02-02 21:03:00 · 1923 阅读 · 0 评论 -
tomcat解析(七)Digester(四)characters,endElement.endDocument
1.characters 方法内容如下: /** * Process notification of character data received from the body of * an XML element. * * @param buffer The characters from the XML document * @par原创 2010-01-27 12:54:00 · 1287 阅读 · 0 评论