Tomcat
文章平均质量分 71
哈哈哈哈蜜瓜
。软件工程师。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Tomcat详解阅读摘要
Tomcat和apache结合的非常完美。首先从目录上了解bin目录:存放启用和关闭的脚本conf目录:放不同的配置文件doc目录:存放文档lib目录:存放Tomcat运行的库文件temp目录:Tomcat源码webapps目录:wbe发布目录work目录:存放jsp编译后的class文件原创 2017-07-10 17:06:52 · 369 阅读 · 0 评论 -
Tomcat源码解析(16)
部署器 使用一个Web应用程序,必须表示该应用程序的Context实例,部署到一个Host实例。在Tomcat中,可以用war文件的形式来部署。原创 2017-09-08 17:26:43 · 195 阅读 · 0 评论 -
Tomcat源码解析(10)
StandardContext类 Context实例表示一个web应用程序。包含一个或者多个Wrapper实例,每个wrapper都代表一个Servlet。 StandardContext是Context的标准实现,今天说一下工作机制。 StandardContext的配置 创建实例之后,必须调用start()方法,为引入的每个HTTP请求提供服务。可能由于某种原创 2017-09-01 15:58:42 · 286 阅读 · 0 评论 -
Tomcat源码解析(15)
启动Tomcat原创 2017-09-08 17:26:01 · 218 阅读 · 0 评论 -
Tomcat源码解析(9)
StandardWrapper context包含一个或者多个Wrapper。每个该实例表示一个具体的servlet定义。方法调用序列。 对于每个引入的HTTP请求,连接器都会调用与其关联的servlet容器的invoke()。之后servlet容器会调用所有子容器的invoke()。1.连接器创建request和response2.连接器调用StandardCon原创 2017-08-28 16:52:54 · 232 阅读 · 0 评论 -
Tomcat源码解析(14)
关闭钩子 很多时候,用户关闭程序后需要做一些清理。有时候,并不按照推荐的方法关闭应用程序,有可能不做清理工作。使用关闭钩子,确保清理代码总是能够执行,无论用户如何终止应用程序。java虚拟机,会对两类事件进行响应,然后执行关闭操作。1.调用System.exit()或程序最后一个非守护进程线程退出,应用程序正常退出。2.用户强制虚拟机中断运行原创 2017-09-06 10:52:48 · 225 阅读 · 0 评论 -
Tomcat源码解析(13)
Digester库 我们在Bootstrap类,来硬编码的,实例化各种类。 Tomcat提供了server.xml来对应用程序进行配置。每个元素对应一个java对象。 使用digester来将xml文档元素转换成java对象。Digester本来是解析sturest-config.xml的。由于解析xml到java对象很常用。所以作为一个项目。 Dige原创 2017-09-05 16:47:23 · 252 阅读 · 0 评论 -
Tomcat源码解析(12)
服务器组件和服务组件 通过实例化一个连接器获取一个servlet容器。 之前只有一个连接器,服务8080端口上的HTTP请求。无法添加另一个连接器来处理HTTOS之类的请求。 服务器组件(org.apache.catalina.Server) server接口的实例表示Catalina的整个servlet引擎,包括所有的组件。服务器组件十分有用,因为它使用了一种优原创 2017-09-04 14:21:02 · 208 阅读 · 0 评论 -
Tomcat源码解析(11)
Host和Engine 如果你想在同一个Tomcat部署多个Context容器。需要使用Host容器。 Context容器的父容器通常是Host容器,也可能是其他实现。或者如果不必要,就可以不使用父容器。(但是总会使用一个Host) Engine容器表示Catalina的整个servlet引擎。如果使用了Engine容器,它总是处于容器最顶层。添加的通常是host或者contex原创 2017-09-04 11:39:31 · 236 阅读 · 0 评论 -
Tomcat源码解析(9)
安全性 web应用程序的内容是受限制的,只有授权用户通过用户密码才可以访问。 servlet支持通过配置部署描述器(web.xml)对内容进行访问控制。 servlet容器通过一个叫验证器的阀来支持安全限制。当servlet容器启动的时候,验证阀会添加到Context容器的管道中。在调用wrapper阀之前,会先调用验证器阀,对当前用户进行身份验证,通过才可以继续调用后续的阀。原创 2017-08-25 15:51:08 · 313 阅读 · 0 评论 -
Tomcat源码解析(8)
Session管理 通过一个称为Session管理器的组件,来管理Session对象。,该组件由org.apache.catalina.Manager接口表示。 Session管理器必须与一个Context容器相关联。负责创建,更新,销毁Session对象。当请求来的时候返回一个有效的Session对象。 Servlet可以通过HttpServletRequest接口对象的原创 2017-08-23 16:04:26 · 229 阅读 · 0 评论 -
Tomcat源码解析(3)
默认连接器 上一节的连接器可以正常工作,经过修改还可以实现更多功能。这里介绍Tomcat的默认连接器(已被Coyote取代)。 连接器是一个独立的模块,可以被插入到servlet容器中。 Tomcat的连接器必须满足:1.实现org.apache.catalina.Connector接口 2.负责创建org.apache.catalina.Request接口的reques原创 2017-07-27 16:43:51 · 307 阅读 · 0 评论 -
Tomcat源码解析(2)
连接器(通过自己写的类来实现tomcat,上一节,我们只有server和request和response和servlet实现。这次我们增加连接器)StringManager类 Tomcat这样的大型项目,需要小心的处理错误消息。来定位发生错误的异常。 Tomcat处理错误消息是将消息存储在properties中。便于读取和编辑。但是Tomcat有N多个类,文件会很大。于是将原创 2017-07-26 14:56:06 · 300 阅读 · 0 评论 -
Tomcat源码解析(6)
日志记录器 用来记录消息的组件。在catalina中,日志记录器需要与某个servlet容器相关联。 在org.apache.catalina.logger包下,Tomcat提供几种不同类型的日志记录器。 与上一节的程序相比,只是SimpleContext和Bootstrap类有变化。Logger接口 提供了一些log()方法来写日志。 接受一个日志原创 2017-08-04 14:02:53 · 240 阅读 · 0 评论 -
Tomcat源码解析(7)
载入器 载入需要的servlet。之前我们都使用系统类加载器。所以servlet可以访问所有的类(包括jvm的JDK)。这样是不安全的。servlet应该只允许载入WEB-INF/classes目录以及子目录下的类。这就需要我们自定义的载入器,定义某种规则来载入类。 Catalina中,载入器是org.apache.catalina.Loader接口的实例。 Tomcat需要原创 2017-08-09 17:18:57 · 281 阅读 · 0 评论 -
Tomcat源码解析(5)
生命周期 Catalina包含很多组件。当Catalina启动的时候,其他组件(子组件)也一起启动,同样当关闭的时候,这些组件也会一起关闭。 这一实现是由Lifecycle接口实现的。 事件是org.apache.catalina.LifecyleEvent类的实例。如果Catalina组件可以触发事件,那么需要编写响应的事件监听器对这些事件响应。 事件监听器是or原创 2017-08-03 16:08:15 · 250 阅读 · 0 评论 -
Tomcat源码解析(1)
HttpServer类,表示一个Web服务器。 主要方法public static void main(){ HttpServer server = new HttpServer(); server.await(); }await方法,也是通过java的serverSocket来提供服务的。 (为何不是wait而是await,是因为wait是Object的与线程相关的方法)原创 2017-07-25 14:39:02 · 278 阅读 · 0 评论 -
在服务器同时启动2个tomcat服务以及tomcat注册到服务
我看了很多同时启动2个tomcat的文章,但是还是不尽如人意。之后自己尝试,后解决。场景:我需要重新拉一个tomcat放在服务器,但是发现环境变量配置了一个,并且还在跑。1.我们修改server.xml文件将2个tomcat的端口都规避开2.修改startup.bat文件。前2个不多说了,为啥要设置java的呢,刚开始我感觉没用就没有配置,发现内存溢出了。。。所以如果不是内存溢出就不用配置了。同理...原创 2018-07-03 09:40:29 · 1276 阅读 · 0 评论
分享