首页 > 代码库 > Tomcat 学习笔记二

Tomcat 学习笔记二

学习一
  java.bean.PropertyChangeListener用来监听bean类的属性值改变。当改变时同时执行对应事件。而且是线程安全的。tomcat用此reload的Boolean值改变是否要重新加载。

public class Demo2 implements PropertyChangeListener{        PropertyChangeSupport support = new PropertyChangeSupport(this);        private String name;        public String getName() {        return name;    }        public Demo2()    {        this.name = "apple";        addListenProperty(this);    }        public void setName(String name) {        String oldName = this.name;        this.name = name;        support.firePropertyChange("name", oldName, this.name);    }    public void addListenProperty(PropertyChangeListener li)    {        support.addPropertyChangeListener(li);    }    @Override    public void propertyChange(PropertyChangeEvent evt) {        System.out.println("--------------------------------");        System.out.println(evt.getOldValue());        System.out.println(evt.getNewValue());        System.out.println(evt.getPropertyName());        ((Demo2)evt.getSource()).gotoSchool();        System.out.println("--------------------------------");    }        public void gotoSchool()    {        System.out.println("welcome to MIT !");    }}

Test测试类

public class Demo {        public static void main(String[] args) {        Demo2 t = new Demo2();        t.setName("jobs");        System.out.println("~~~~~~~~~~~~~~~~");        t.setName("steven");    }}

测试结果

--------------------------------applejobsnamewelcome to MIT !--------------------------------~~~~~~~~~~~~~~~~--------------------------------jobsstevennamewelcome to MIT !--------------------------------

学习二
  接口Pipeline  流水线功能学习有点类似于过滤器构造。它有一个Value数组。使用 System.arraycopy() 来扩展流水线阀门个数。
  invoke方法传递到下一个。阀门全部通过之后有一个basic方法。就是warpper包装器了。
  这时候开始加载Servlet.class。执行service方法。阀门可以用来HeaderLoggerValve,ClientIPLoggerValve记录日志。

public interface Pipeline {    public Valve getBasic();    public void setBasic(Valve valve);    public void addValve(Valve valve);    public Valve[] getValves();    public void removeValve(Valve valve);    public Valve getFirst();}

 

  接下来接口Lifecycle,用于控制类的生命周期了。几乎所有的容器都实现了这个类。
  还有loader类。类的加载。动态加载webapp下的class文件。有点复杂有时间在看看。

附上tomcat各容器之间关系图,多看看,多想想。

流程图

Tomcat 学习笔记二