2012年9月23日
摘要: 声明:源码版本为Tomcat 6.0.35 在本系列的第二篇文章中,曾经介绍过在Tomcat启动时会初始化类加载器(ClassLoader),来处理整个Web工程中Class的加载问题。 类加载机制是Java平台中相当重要的核心技术,待笔者有所积累后会再次讨论这个话题。在一般的业务开发中我们可能较少接触和使用ClassLoader,但是在进行框架级程序开发时,设计良好的类加载机制能够实现更好地模块划分和更优的设计,如Java模块化技术OSGi就是通过为每个组件声明独立的类加载器来实现组件的动态部署功能。在Tomcat的代码实现中,为了优化内存空间以及不同应用间的类隔离,Tomcat通过内置的一 阅读全文
posted @ 2012-09-23 22:31 levinzhang1981 阅读(2880) 评论(2) 推荐(3) 编辑
  2012年9月17日
摘要: 随着Java SE对模块化功能原生支持的一再推迟(据最新的消息,Jigsaw项目——Java SE中的标准模块系统——的开发工作相对滞后,已经延期到了Java 9中,Java 9到2015年才有希望发布),OSGi作为事实标准的Java模块化实现得到了长足的发展,尤其是随着云计算和分布式技术的兴起,OSGi这种模块化、动态部署的核心功能将会受到越来越多的重视。目前OSGi规范的主流实现框架是Eclipse Equinox以及Apache Felix,其实际的应用场景也早就从起初的嵌入式设备扩展到桌面应用甚至Java企业级开发领域。最为大家所熟知的OSGi应用是Eclipse IDE,其实像Su 阅读全文
posted @ 2012-09-17 05:46 levinzhang1981 阅读(1804) 评论(2) 推荐(1) 编辑
  2012年9月9日
摘要: 声明:源码版本为Tomcat 6.0.35前面的文章中介绍了Tomcat初始化的过程,本文将会介绍Tomcat对HTTP请求的处理的整体流程,更细节的。在上一篇文章中,介绍到JIoEndpoint 中的内部类Acceptor用来接受Socket请求,并调用processSocket方法来进行请求的处理,所以会从本文这个方法开始进行讲解。 protected boolean processSocket(Socket socket) { try { if (executor == null) { getWorkerThread().... 阅读全文
posted @ 2012-09-09 22:42 levinzhang1981 阅读(3777) 评论(0) 推荐(5) 编辑
  2012年9月2日
摘要: 声明:源码版本为Tomcat 6.0.35前面的文章中介绍了Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话,整个Tomcat的组成可以如下图所示:Tomcat在接收到用户请求时,将会通过以上组件的协作来给最终用户产生响应。首先是最外层的Server和Service来提供整个运行环境的基础设施,而Connector通过指定的协议和接口来监听用户的请求,在对请求进行必要的处理和解析后将请求的内容传递给对应的容器,经过容器一层层的处理后,生成最终的响应信息,返回给客户端。 Tomcat的容器通过实现一系列的接口,来统一处理一. 阅读全文
posted @ 2012-09-02 17:07 levinzhang1981 阅读(5491) 评论(0) 推荐(3) 编辑
  2012年8月25日
摘要: Tomcat是JEE开发人员最常用到的开发工具,在Java Web应用的调试开发和实际部署中,我们都可以看到Tomcat的影子。大多数时候,我们可以将Tomcat当做一个黑盒来看待,只需要将编写的Java Web工程进行部署即可,但是,在遇到一些比较复杂难解决的问题时,如果我们了解了Tomcat的内部实现原理将会处理起来更得心应手更快地定位问题。另外,通过学习Tomcat的源码还可以更加深入地了解JEE规范,学习常见的设计模式。本系列的文章,将会介绍Tomcat的核心功能是如何实现的,一方面作为自己学习的总结,另一方面也希望给学习Tomcat的朋友提供一点帮助材料。 本文首先介绍Tomcat的 阅读全文
posted @ 2012-08-25 07:36 levinzhang1981 阅读(3281) 评论(1) 推荐(4) 编辑