001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 019 package listeners; 020 021 022 import javax.servlet.ServletContext; 023 import javax.servlet.ServletContextAttributeEvent; 024 import javax.servlet.ServletContextAttributeListener; 025 import javax.servlet.ServletContextEvent; 026 import javax.servlet.ServletContextListener; 027 028 029 /** 030 * Example listener for context-related application events, which were 031 * introduced in the 2.3 version of the Servlet API. This listener 032 * merely documents the occurrence of such events in the application log 033 * associated with our servlet context. 034 * 035 * @author Craig R. McClanahan 036 * @version $Revision: 514091 $ $Date: 2007-03-03 01:26:39 -0500 (Sat, 03 Mar 2007) $ 037 */ 038 039 public final class ContextListener 040 implements ServletContextAttributeListener, ServletContextListener { 041 042 043 // ----------------------------------------------------- Instance Variables 044 045 046 /** 047 * The servlet context with which we are associated. 048 */ 049 private ServletContext context = null; 050 051 052 // --------------------------------------------------------- Public Methods 053 054 055 /** 056 * Record the fact that a servlet context attribute was added. 057 * 058 * @param event The servlet context attribute event 059 */ 060 public void attributeAdded(ServletContextAttributeEvent event) { 061 062 log("attributeAdded('" + event.getName() + "', '" + 063 event.getValue() + "')"); 064 065 } 066 067 068 /** 069 * Record the fact that a servlet context attribute was removed. 070 * 071 * @param event The servlet context attribute event 072 */ 073 public void attributeRemoved(ServletContextAttributeEvent event) { 074 075 log("attributeRemoved('" + event.getName() + "', '" + 076 event.getValue() + "')"); 077 078 } 079 080 081 /** 082 * Record the fact that a servlet context attribute was replaced. 083 * 084 * @param event The servlet context attribute event 085 */ 086 public void attributeReplaced(ServletContextAttributeEvent event) { 087 088 log("attributeReplaced('" + event.getName() + "', '" + 089 event.getValue() + "')"); 090 091 } 092 093 094 /** 095 * Record the fact that this web application has been destroyed. 096 * 097 * @param event The servlet context event 098 */ 099 public void contextDestroyed(ServletContextEvent event) { 100 101 log("contextDestroyed()"); 102 this.context = null; 103 104 } 105 106 107 /** 108 * Record the fact that this web application has been initialized. 109 * 110 * @param event The servlet context event 111 */ 112 public void contextInitialized(ServletContextEvent event) { 113 114 this.context = event.getServletContext(); 115 log("contextInitialized()"); 116 117 } 118 119 120 // -------------------------------------------------------- Private Methods 121 122 123 /** 124 * Log a message to the servlet context application log. 125 * 126 * @param message Message to be logged 127 */ 128 private void log(String message) { 129 130 if (context != null) 131 context.log("ContextListener: " + message); 132 else 133 System.out.println("ContextListener: " + message); 134 135 } 136 137 138 /** 139 * Log a message and associated exception to the servlet context 140 * application log. 141 * 142 * @param message Message to be logged 143 * @param throwable Exception to be logged 144 */ 145 private void log(String message, Throwable throwable) { 146 147 if (context != null) 148 context.log("ContextListener: " + message, throwable); 149 else { 150 System.out.println("ContextListener: " + message); 151 throwable.printStackTrace(System.out); 152 } 153 154 } 155 156 157 }