• Tomcat中的Listener源码片段解读


      @Override
        public <T extends EventListener> void addListener(T t) {
            if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
                throw new IllegalStateException(
                        sm.getString("applicationContext.addListener.ise",
                                getContextPath()));
            }
    
            boolean match = false;
            if (t instanceof ServletContextAttributeListener ||
                    t instanceof ServletRequestListener ||
                    t instanceof ServletRequestAttributeListener ||
                    t instanceof HttpSessionIdListener ||
                    t instanceof HttpSessionAttributeListener) {
                context.addApplicationEventListener(t);
                match = true;
            }
    
            if (t instanceof HttpSessionListener
                    || (t instanceof ServletContextListener &&
                            newServletContextListenerAllowed)) {
                // Add listener directly to the list of instances rather than to
                // the list of class names.
                context.addApplicationLifecycleListener(t);
                match = true;
            }
    
            if (match) return;
    
            if (t instanceof ServletContextListener) {
                throw new IllegalArgumentException(sm.getString(
                        "applicationContext.addListener.iae.sclNotAllowed",
                        t.getClass().getName()));
            } else {
                throw new IllegalArgumentException(sm.getString(
                        "applicationContext.addListener.iae.wrongType",
                        t.getClass().getName()));
            }
        }

    这段原代码,可以看到Listener一定要继承EventListener,然后conext,到底什么是上下文,监听器是其一部分。

  • 相关阅读:
    脚本编辑器的写法
    图集优化
    数组与链表的区别
    第四课 vi编辑器使用
    第三课下 Linux termina命令行常用快捷键
    第三课上 Linux命令入门
    01.Volatile相关知识
    第二课 Ubuntu环境搭建和图形界面操作
    第一课 不要用老方法学习单片机和ARM
    第八讲 IPC之信号量Semaphore
  • 原文地址:https://www.cnblogs.com/Robin008/p/10205211.html
Copyright © 2020-2023  润新知