Tomcat 學習筆記二

學習一
  java.bean.PropertyChangeListener用來監聽bean類的屬性值改變。當改變時同時執行對應事件。並且是線程安全的。tomcat用此reload的Boolean值改變是否要從新加載。java

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測試類web

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

測試結果數組

--------------------------------
apple
jobs
name
welcome to MIT !
--------------------------------
~~~~~~~~~~~~~~~~
--------------------------------
jobs
steven
name
welcome to MIT !
--------------------------------

學習二
  接口Pipeline  流水線功能學習有點相似於過濾器構造。它有一個Value數組。使用 System.arraycopy() 來擴展流水線閥門個數。
  invoke方法傳遞到下一個。閥門所有經過以後有一個basic方法。就是warpper包裝器了。
  這時候開始加載Servlet.class。執行service方法。閥門能夠用來HeaderLoggerValve,ClientIPLoggerValve記錄日誌。tomcat

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各容器之間關係圖,多看看,多想一想。app

流程圖webapp

相關文章
相關標籤/搜索