生命周期
tomcat开发者将Catalina中的各种组件的启动、关闭行为,都抽象为一个接口org.apache.catalina.Lifecycle,进而可以在管理生命周期相关行为时面向接口编程。
通过实现Lifecycle接口完成单一启动/关闭机制,并且以一种优雅的方式(观察者模式)向其他组件发送事件消息。
Lifecycle接口
Catalina在设计上允许一个组件包含其他组件,父级组件负责启动/关闭它的子组件,这样的层层设计,使得所有的组件都置于顶级组件的监护下,这样Catalina的启动类只需要启动一个组件,就可以将全部的应用组件都启动起来。
1 2 3 4 5 6 7 8 9
| public interface Lifecycle { static final String START_EVENT = "start"; void addLifecycleListener(LifecycleListener listener); LifecycleListener[] findLifecycleListeners(); void removeLifecycleListener(LifecycleListener listener); void start() throws LifecycleException; void stop() throws LifecycleException; }
|
LifecycleEvent类
通知实现了Lifecycle接口的组件上的监听者组件发生了变化的通用event类。
1 2 3 4 5 6 7 8 9
| public final class LifecycleEvent extends EventObject{ private Object data; private Lifecycle lifecycle; private String type; }
|
LifecycleListener接口
定义了组件生命周期事件的监听者
1 2 3
| public interface LifecycleListener { void lifecycleEvent(LifecycleEvent event); }
|
LifecycleSupport类
一个帮助管理监听者,并触发相应生命周期事件的Support类。
1 2 3 4 5 6 7 8 9
| public final class LifecycleSupport{ private Lifecycle lifecycle = null; private LifecycleListener listeners[] = new LifecycleListener[0]; public void addLifecycleListener(LifecycleListener listener){} public void removeLifecycleListener(LifecycleListener listener){} public LifecycleListener[] findLifecycleListeners(){} public void fireLifecycleEvent(String type, Object data) {} }
|