学习tomcat 小记(3)

[size=medium]1)Lifecycle
public interface Lifecycle {
public void addLifecycleListener(LifecycleListener listener);
public LifecycleListener[] findLifecycleListeners();
public void removeLifecycleListener(LifecycleListener listener);

public void start() throws LifecycleException;
public void stop() throws LifecycleException;
}

2)LifecycleListener
public interface LifecycleListener {
public void lifecycleEvent(LifecycleEvent event);
}

其中,当监听的事件发生时,触发lifecycleEvent方法。

[color=blue]*对于观察者(监听器)模式的理解:
先注册监听器,然后在某个方法中(该方法中传入了event(如一个鼠标事件))执行listeners(从注册监听器的地方拿)的handleEvent(Event e)方法。
[/color]
[color=darkred]上面addLifecycleListener 为注册监听器, 而start()方法则是触发事件的地方。
这就是为什么Lifecycle接口要上面5个方法一起的原因。[/color]


2)Logger
Logger是catalina中用于记录消息的组件。在catalina中,logger是与container相关联的,与其他组件相比,稍简单一些。在org.apache.catalina.logger包中,tomcat提供了不同类型的logger。

tomcat提供了三个logger,分别是FileLogger,SystemErrorLogger和SystemOutLogger。他们都位于org.apache.catalina.logger包下,均继承自org.apache.catalina.logger.LoggerBase类。在tomcat4中LoggerBase实现了org.apache.catalina.Logger接口,在tomcat5中,它还实现了Lifecycle和MBeanRegistration接口。


3)Loader接口
tomcat的loader指的是web应用loader,而不是类loader。
tomcat的loader组件通常使用getContainer方法和setContainer方法与某个context容器相关联。若是context中的某个类修改了之后,loader可以进行重载。

Reloader接口
为了支持类的自动重载功能,类载入器需要实现org.apache.catalina.loader.Reloader接口。该接口定义如下:
package org.apache.catalina.loader;
public interface Reloader {
public void addRepository(String repository);
public String[] findRepositories ();

public boolean modified();
}

其中最重要的方法是modified方法,该方法返回web应用中类是否被修改了。


WebappLoader类
org.apache.catalina.loader.WebappLoader类实现了Loader接口,表示一个web应用中的loader,负责为web应用载入需要的类。WebappLoader会创建一个org.apache.catalina.loader.WebappClassLoader的实例作为其类载入器。像其他catalina组件一样,WebappLoader类要实现org.apache.catalina.Lifecycle接口,由其container负责启动/关闭。[color=red]WebappLoader类还是先了java.lang.Runnable接口,这样就可以使用另一个线程来重复调用其类载入器的modified方法来检查是否有类被修改了。若modified方法返回true,WebappLoader实例会通知其container来重新载入类(注意,不是WebappLoader执行类的重载)。(此处的多线程实现值得研究)[/color]
调用WebappLoader类的start方法后要执行的重要任务包括:
(1)创建一个类载入器
(2)设置repository
(3)设置类路径
(4)设置访问权限
(5)为类的自动重载打开一个新线程


[color=darkblue]
下一个总结将是session管理[/color]
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值