zoukankan      html  css  js  c++  java
  • 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");
        }
    }

    测试结果

    --------------------------------
    apple
    jobs
    name
    welcome to MIT !
    --------------------------------
    ~~~~~~~~~~~~~~~~
    --------------------------------
    jobs
    steven
    name
    welcome 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各容器之间关系图,多看看,多想想。

    流程图

    Stay Hungry,Stay Foolish!
  • 相关阅读:
    JDK的命令详解
    聊天室java socket
    怎么实现利用Java搜索引擎收集网址的程序
    Hibernate实现对多个表进行关联查询
    如何学好J2ME?
    谈谈Java工程师应该具有的知识
    【经营智慧】005.眼光盯着未来
    【成功智慧】002.对任何小事都不要掉以轻心
    【经营智慧】008.要想赚钱,就得打破既有的成见
    【思维智慧】004.砸碎障碍的石头,把它当做钥匙
  • 原文地址:https://www.cnblogs.com/stay-9527/p/4014525.html
Copyright © 2011-2022 走看看