- 浏览: 839767 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
renzhengzhi:
请教一下楼主,公有云和私有云的开发,具体要做哪些工作呢?我拿到 ...
4,云的4 种模式 -
SangBillLee:
我用了solr5.5,用SolrQuery查询,没法高亮,不知 ...
solr5.x快速入门 -
lw900925:
这翻译读起来真是别扭。
solr in action翻译-第一章1.1 -
springjpa_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring MVC性能提升 -
h416373073:
正遇到了此问题不知如何解决, 多谢分享
solr错误
Catalina由多个组件组成,当Catalina启动的时候,这些组件也会启动。当Catalina停止的时候,这些组件也必须有机会被清除。
例如,当一个容器停止工作的时候,它必须唤醒所有加载的servlet的destroy方法,而session管理器要保存session到二级存储器中。
保持组件启动和停止一致的的机制通过实现org.apache.catalina.Lifecycle接口来实现。
一个实现了Lifecycle接口的组件同是会触发一个或多个下列事件:BEFORE_START_EVENT, START_EVENT, AFTER_START_EVENT, BEFORE_STOP_EVENT, STOP_EVENT, and AFTER_STOP_EVENT。
当组件被启动的时候前三个事件会被触发,而组件停止的时候会触发后边三个事件。另外,如果一个组件可以触发事件,那么必须存在相应的监听器来对触发的事件作出回应。
监听器使用org.apache.catalina.LifecycleListener来表示。
Lifecycle接口
public interface Lifecycle { public static final String START_EVENT = "start"; public static final String BEFORE_START_EVENT = "before_start"; public static final String AFTER_START_EVENT = "after_start"; public static final String STOP_EVENT = "stop"; public static final String BEFORE_STOP_EVENT = "before_stop"; public static final String AFTER_STOP_EVENT = "after_stop"; public void addLifecycleListener(LifecycleListener listener); public LifecycleListener[] findLifecycleListeners(); public void removeLifecycleListener(LifecycleListener listener); public void start() throws LifecycleException; public void stop() throws LifecycleException; }
LifecycleEvent类
LifecycleEvent表示一个生命周期事件
public final class LifecycleEvent extends EventObject { public LifecycleEvent(Lifecycle lifecycle, String type) { this(lifecycle, type, null); } public LifecycleEvent(Lifecycle lifecycle, String type, Object data) { super(lifecycle); this.lifecycle = lifecycle; this.type = type; this.data = data; } private Object data = null; private Lifecycle lifecycle = null; rivate String type = null; public Object getData() { return (this.data); } public Lifecycle getLifecycle() { return (this.lifecycle); } public String getType() { return (this.type); } }
LifecycleListener接口
LifecycleListener接口可以表示生命周期监听器
public interface LifecycleListener { public void lifecycleEvent(LifecycleEvent event); }
LifecycleSupport类
Catalina提供了一个公用类org.apache.catalina.util.LifecycleSupport来简化组件处理监听器和触发生命周期事件
public final class LifecycleSupport { // ----------------------------------------------------------- Constructors /** * Construct a new LifecycleSupport object associated with the specified * Lifecycle component. * * @param lifecycle The Lifecycle component that will be the source * of events that we fire */ public LifecycleSupport(Lifecycle lifecycle) { super(); this.lifecycle = lifecycle; } // ----------------------------------------------------- Instance Variables /** * The source component for lifecycle events that we will fire. */ private Lifecycle lifecycle = null; /** * The set of registered LifecycleListeners for event notifications. */ private LifecycleListener listeners[] = new LifecycleListener[0]; // --------------------------------------------------------- Public Methods /** * Add a lifecycle event listener to this component. * * @param listener The listener to add */ public void addLifecycleListener(LifecycleListener listener) { synchronized (listeners) { LifecycleListener results[] = new LifecycleListener[listeners.length + 1]; for (int i = 0; i < listeners.length; i++) results[i] = listeners[i]; results[listeners.length] = listener; listeners = results; } } /** * Get the lifecycle listeners associated with this lifecycle. If this * Lifecycle has no listeners registered, a zero-length array is returned. */ public LifecycleListener[] findLifecycleListeners() { return listeners; } /** * Notify all lifecycle event listeners that a particular event has * occurred for this Container. The default implementation performs * this notification synchronously using the calling thread. * * @param type Event type * @param data Event data */ public void fireLifecycleEvent(String type, Object data) { LifecycleEvent event = new LifecycleEvent(lifecycle, type, data); LifecycleListener interested[] = null; synchronized (listeners) { interested = (LifecycleListener[]) listeners.clone(); } for (int i = 0; i < interested.length; i++) interested[i].lifecycleEvent(event); } /** * Remove a lifecycle event listener from this component. * * @param listener The listener to remove */ public void removeLifecycleListener(LifecycleListener listener) { synchronized (listeners) { int n = -1; for (int i = 0; i < listeners.length; i++) { if (listeners[i] == listener) { n = i; break; } } if (n < 0) return; LifecycleListener results[] = new LifecycleListener[listeners.length - 1]; int j = 0; for (int i = 0; i < listeners.length; i++) { if (i != n) results[j++] = listeners[i]; } listeners = results; } } }
LifecycleSupport类存储所有的生命周期监听器到一个数组中,该数组为listenens,它初始化的时候没有任何成员。
private LifecycleListener listeners[] = new LifecycleListener[0];
当一个监听器通过addLifecycleListener方法被添加的时候,一个新的数组(长度比旧数组大1)会被创建。
然后就数组中的元素会被拷贝到新数组中并把新事件添加到数组中。
当一个事件被删除的时候,一个新的数组(长度为旧数组-1)的数组会被创建并将所有的元素存储到其中。
发表评论
-
21,tomcat关闭钩子
2012-11-22 20:35 6631在很多环境下,在关闭应用程序的时候需要做一些清理工作。问题在于 ... -
20,tomcat的XML解析---digester
2012-11-22 20:07 1555tomcat使用server.xml配置属性信息Tomcat使 ... -
19tomcat的服务器和服务
2012-11-20 20:10 1074Server服务器 Server接口表示整个Catalina ... -
18,tomcat的主机(host)和引擎
2012-11-16 09:13 2348如果需要在一个Tomcat部署中部署多个上下文,需要使用一个主 ... -
附,listener、 filter、servlet 加载顺序及其详解
2012-11-15 09:10 982一、 1、启动一个WEB项 ... -
17,tomcat中StandardContext
2012-11-15 08:59 5039一个上下文容器(Context)代表一个web应用,每一个上下 ... -
16,tomcat中StandardWrapper实现
2012-11-14 18:28 3883Wrapper接口在Catalina中的标准实现Standar ... -
15,tomcat安全
2012-11-14 09:02 1197有些web应用程序的内容是有限制的,只允许有权限的用户在提供正 ... -
14,tomcat session管理
2012-11-14 09:01 1101Catalina通过一个叫管理器的组建来完成Session的管 ... -
13.tomcat加载器
2012-11-13 13:21 1374库(repository)和源(res ... -
12,tomcat日志处理
2012-11-13 13:15 1248日志系统是一个记录信息的组件。在Catalina中,日志系统是 ... -
附:JAVA事件处理--观察者模式
2012-11-12 10:33 999简单地说,观察者模式 ... -
10.容器
2012-11-12 10:12 1349容器是一个处理用户servlet请求并返回对象给we ... -
9.Tomcat的默认连接器
2012-11-12 08:52 1177Tomcat连接器是一个可以插入servlet容器的独立模块, ... -
8.连接器
2012-11-12 08:46 935一个可以创建更好的请 ... -
7,Facade外观模式
2012-11-08 11:28 946外观模式:为子系统中的一组接口提供了一个一致的界面,此模式定义 ... -
6,一个简单的servlet容器
2012-11-08 11:10 848总的来说,一个全功能的servlet容器会为servlet的每 ... -
5.javax.servlet.Servlet接口
2012-11-08 09:18 947javax.servlet.Servlet接口Servlet编 ... -
4,一个简单的tomcat
2012-11-07 18:10 935流程图如下 -
3.ServerSocket 与 Socket的区别
2012-11-07 16:56 11711.1 ServerSocket类创建 ...
相关推荐
每个插件都有自己的生命周期和API,与其他插件协作以提供特定服务。 5. **Tomcat 插件功能**:集成插件通常包括如下特性: - **服务器视图**:在Eclipse的工作台中展示Tomcat服务器的结构,便于浏览和管理Web应用...
在描述中提到的InstanceSupport.edx文件可能是一个教学资源,可能包含了关于Tomcat生命周期和事件管理的详细讲解和实例。通常,这种类型的文件可能是教育平台如EdX上的课程资料,用于辅助学习者理解相关概念。 了解...
接着,深入探讨Servlet的生命周期、请求处理机制,以及如何在Tomcat中部署和运行Servlet。对于JSP,书籍会介绍其语法、EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library),这些都是JSP开发...
包括Servlet生命周期、请求响应处理、会话管理等。 6. **Web应用程序部署**:讨论WAR文件的创建和部署,以及如何通过修改context.xml配置文件来定制部署。 7. **安全配置**:涵盖如何设置用户访问权限,实现基于...
开发者可以通过这些脚本来管理Tomcat服务器的生命周期。 2. **conf目录**:这是Tomcat的配置文件存储的地方,其中`server.xml`是最重要的配置文件,定义了服务器的全局设置,包括端口号、连接器、Context等。其他如...
Tomcat的核心组件之一是`catalina.jar`,它是Tomcat服务器的主要运行时库,包含了处理HTTP请求、容器管理和Servlet生命周期管理等核心功能。当项目中出现与Tomcat相关的错误时,`catalina.jar`可能是排查问题的关键...
此外,还详细介绍了Tomcat的目录结构,如WEB-INF目录下的web.xml文件,这是配置Web应用的关键,书中会讲解如何配置Servlet、过滤器和监听器,以及它们在Web应用生命周期中的作用。 Java Web开发中,JSP和Servlet是...
Servlet生命周期包括加载、初始化、服务、销毁四个阶段,开发者可以自定义这些阶段的行为。 **三、Tomcat与Servlet的结合** 当用户向Tomcat服务器发送请求时,Tomcat会根据web.xml配置文件找到对应的Servlet,并...
- `-XX:NewRatio`: 控制年轻代和老年代的比例,对于Tomcat这样的短生命周期对象较多的应用,通常年轻代应较大。 - `-XX:SurvivorRatio`: 年轻代中Eden区和两个Survivor区的比例,可以适当调整以优化垃圾回收。 3....
3. **Servlet编程**:作者深入浅出地解释了Servlet生命周期,包括初始化、服务、销毁等阶段,以及如何编写Servlet类和重写其方法来处理请求和响应。同时,讲解了Servlet的多线程问题和session管理。 4. **JSP技术**...
在Tomcat中,Servlet和JSP的生命周期由容器(如Tomcat)管理。Servlet实例化、初始化、服务、销毁等阶段都由容器控制。JSP在首次请求时会被编译成对应的Servlet,然后按照Servlet的生命周期执行。 总结起来,...
它提供了许多高级特性,如连接验证、空闲检测、公平锁、生命周期回调等。通过使用这个连接池,开发者可以有效地管理数据库连接,避免资源浪费,提高应用性能。例如,它支持预热连接,即在应用启动时初始化一定数量的...
这可能包括日志记录、部署流程、生命周期管理等方面的改进。 6. **API更新**:Tomcat 9.0.55可能包含对现有API的扩展或修改,以更好地支持现代Web应用程序的开发和集成。 7. **文档更新**:官方文档也会得到相应的...
例如,Tomcat提供了`org.apache.catalina`包,其中包含了容器管理、会话管理、部署和生命周期管理等核心组件。此外,还有`org.apache.coyote`包,用于处理请求/响应协议,如HTTP/1.1。 3. **Tomcat AJP API**: AJP...
10. **扩展性**:Tomcat支持通过添加Valve组件来扩展其核心功能,Valve是处理请求的组件,可以在请求生命周期的不同阶段介入。此外,还可以通过JMX(Java Management Extensions)来管理和监控Tomcat实例。 总结来...
对于开发人员来说,理解Tomcat的工作原理,如Servlet生命周期、JSP转换过程以及如何配置连接池、线程池等高级特性至关重要。同时,掌握如何优化Tomcat性能,如调整内存设置、开启压缩、减少重定向等也是提升应用效率...
通过查看源代码,开发者可以深入学习Tomcat的生命周期管理、请求处理流程、连接器(Connector)和容器(Container)架构等核心概念。 3. **构建过程**:解压后,开发者可以使用Apache Maven或Ant工具来编译和构建...
5. **JSP与Servlet**:Tomcat支持JSP和Servlet的生命周期,JSP会被编译成Servlet,然后由Tomcat执行。开发者可以利用JSP的声明式编程(HTML嵌入Java代码)和脚本元素,或者使用Servlet的更控制流的编程模型。 6. **...
Tomcat作为Servlet容器,负责加载、实例化Servlet,并管理其生命周期。 2. **JSP (JavaServer Pages)**:JSP是一种动态网页技术,允许开发者在HTML中嵌入Java代码,以简化Web应用的开发。Tomcat可以解析JSP文件并...