`
mabusyao
  • 浏览: 252604 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Tomcat 源码学习 之 AprLifecycleListener

 
阅读更多

类名 org.apache.catalina.core.AprLifecycleListener
继承关系

LifecycleListener

关联类

org.apache.tomcat.jni.Library

org.apache.tomcat.jni.SSL

实现功能 检查是否具有 APR/native 库,如果有则将其加载

 

 

 

 

分析

 

在StandardServer一节的学习中,我们遗漏了一个很重要的部分没有提及。那就是加载LifecycleListener。我们已经知道,继承LifecycleListener接口的类可以用来监听component的状态变化。 当StandardServer被初始化时,有一系列的标准LifecycleListener被加载并监听StandardServer的变化(这些Listener被定义在server.xml文件的Server标签下)。接下来的一系列博文中,我们会逐一介绍这些Listener。 

 

APR/native

除了提供正常的web server服务(HTTP,File I/O, etc.), Tomcat还提供了一种称之为 Apache Portable Runtime的组件为web应用提供高可扩展性,高性能以及更好的与本地服务技术整合的功能。Tomcat的文档中提到了几种典型的功能,比如sendfile,epoll和OpenSSL等高级IO功能。OS级别的功能如随机数的产生,系统状态等等。

 

 想要使用APR/native支持,以下组件需要被安装:

1. APR library

2. Tomcat 使用APR所需的JNI wapper类

3. OpenSSL libraries

 

一旦这些组件被安装并可用,Tomcat的Connector就会自动的使用APR,这里最值得关注的就是SSL的配置,我们接下来会大概的提到。详细的内容会在Connector中具体描述。

 

APR Lifecycle Listener配置

 

APRLifecycleListener的配置项很简单,className属性配置其full name。 SSLEngine属性配置是否使用SSL,默认选项是on:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

 

在Connector中,只要配置SSLEnabled为true即可,当然还有其它配置项需要关心,在这里我们不过度深入。

 

<Connector port="443" maxHttpHeaderSize="8192"
                 maxThreads="150"
                 enableLookups="false" disableUploadTimeout="true"
                 acceptCount="100" scheme="https" secure="true"
                 SSLEnabled="true" 
                 SSLCertificateFile="${catalina.base}/conf/localhost.crt"
                 SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" />

 

lifecycleEvent方法

AprLifecycleListener类的核心方法是lifecycleEvent,当StandardServer的状态发生改变时,该方法被触发:

1. eventType == BEFORE_INIT

a. 初始化并加载org.apache.tomcat.jni.Library, 即APR native Library的jni wrapper。

b. 初始化并加载org.apache.tomcat.jni.SSL, 即SSL的jni wrapper。

2. eventType == AFTER_DESTROY

a. 终止org.apache.tomcat.jni.Library

b. 终止org.apache.tomcat.jni.SSL

 

org.apache.tomcat.jni.Library 和 SSL 属于jni的部分了,不在本文讨论之列。

分享到:
评论

相关推荐

    tomcat8源码

    《深入剖析Tomcat8源码》 Tomcat8是一款广泛使用的开源Java Servlet容器,它实现了Java EE中的Web应用规范,包括Servlet、JSP和EL...对于Java EE开发者来说,掌握Tomcat源码无疑能够增强对整个Web栈的掌控力。

    Tomcat8.0底层源码

    通过深入学习Tomcat 8.0的源码,我们可以理解Web服务器的工作原理,提升对Java Web开发的理解,甚至为自己的项目提供优化方案。以下将对Tomcat 8.0的核心组件和关键流程进行详细的阐述。 一、启动流程 Tomcat的启动...

    tomcat9.0源码

    通过阅读和研究Tomcat 9.0.12的源码,开发者可以学习到如何设计和实现一个高效、可扩展的Web服务器,理解HTTP协议的处理流程,以及Java EE规范的实现细节。这对于提升Java服务器端开发能力非常有帮助。同时,源码也...

    tomcat8.0源码

    《深入剖析Tomcat 8.0源码》 Apache Tomcat 是一款开源的Java Servlet容器,主要用于实现Java Web应用程序的部署与运行。Tomcat 8.0是其一个重要的...总之,Tomcat 8.0源码的探索是一次富有挑战且极具价值的学习旅程。

    Tomcat源码

    《深入剖析Tomcat源码:注释篇》 ...通过对Tomcat源码的深入研究,我们可以学习到Web服务器的设计原则、性能优化策略,以及Java EE相关的技术。这些知识不仅有助于提升开发技能,也对解决实际问题具有指导意义。

    Tomcat 8源代码 Servlet源代码

    【描述】"tomcat源码,servlet源码,简单实用" 暗示我们将关注Tomcat如何管理和执行Servlet,以及如何构建高效的Web服务。源代码分析对于理解Tomcat的工作原理、优化性能或进行自定义扩展非常有价值。这里的“简单...

    tomcat 源代码

    Apache Tomcat 6.0.20支持两种协议处理器:`AprLifecycleListener`(使用Apache Portable Runtime,提高性能)和`NioProtocol`(基于非阻塞I/O的Java NIO实现)。 4. **Jasper组件** `Jasper`是Tomcat的JSP引擎,...

    tomcat 6.0源码

    这个源码包提供了对Tomcat内部工作原理的深入理解,对于开发者而言,是一个宝贵的资源,有助于学习、调试和定制Tomcat。下面我们将深入探讨Tomcat 6.0源码中的关键知识点。 1. **Servlet与JSP标准实现**:Tomcat...

    tomcat8 源码

    这个压缩包包含了Tomcat8的源代码,我已经亲自验证过,可以用于学习和研究。通过我的博客文章,你可以找到如何配置环境来本地阅读和理解Tomcat的源码。” 【标签】:“Tomcat” 【知识点详解】: Tomcat8是Java ...

    apache-tomcat-9.0.11源码

    了解并研究Tomcat源码对于深入理解Web服务器的工作原理,优化应用程序性能,以及解决可能出现的技术问题都具有重要意义。 1. **Servlet与JSP**: - **Servlet**:Servlet是Java编程语言中的一个接口,它定义了Web...

    Tomcat6_0_18 源代码 src

    在Tomcat6.0.18中,主要有两个协议处理器:AprLifecycleListener(使用Apache Portable Runtime库)和 CoyoteAdapter(用于Java的NIO和BIO实现)。源码分析可以帮助我们理解数据传输的细节。 3. **Jasper与JSP编译*...

    tomcat并发资料

    11. **源码阅读**:深入阅读Tomcat源码可以帮助理解其内部机制,找出性能瓶颈,进行针对性优化。 12. **工具辅助**:利用工具如VisualVM、JProfiler等进行性能剖析,找出CPU、内存、线程等方面的问题。 综上,掌握...

    tomcat6.0.39源代码

    9. **性能优化**:Tomcat源码中包含了很多可调整的参数和设置,如线程池大小、缓冲区大小、超时时间等,这些都是性能调优的关键。 10. **集群支持**:如果需要构建高可用的Tomcat集群,`Cluster`模块的源码提供了...

    apache-tomcat-7.0.85-src.zip

    这个压缩包“apache-tomcat-7.0.85-src.zip”包含了Tomcat 7.0.85版本的源代码,对于学习和理解Apache Tomcat的工作原理、内部机制以及Java Web应用部署流程来说,这是一个非常宝贵的资源。 源代码分析通常涉及以下...

Global site tag (gtag.js) - Google Analytics