package dk.thoerup.traininfoservice; import java.util.logging.Logger; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import dk.thoerup.circuitbreaker.AccountingCircuitBreaker; import dk.thoerup.circuitbreaker.CircuitBreakerManager; import dk.thoerup.circuitbreaker.jmx.JMXWrapper; import dk.thoerup.circuitbreaker.notification.JavaLogNotifier; /** * Application Lifecycle Listener implementation class JmxListener * */ public class CircuitBreakerListener implements ServletContextListener { Logger logger = Logger.getLogger(CircuitBreakerListener.class.getName()); public CircuitBreakerListener() { } /** * @see ServletContextListener#contextInitialized(ServletContextEvent) */ public void contextInitialized(ServletContextEvent sce) { logger.warning("Context Init"); int threshold = Integer.parseInt(sce.getServletContext().getInitParameter("banedk_threshold") ); int timeout = Integer.parseInt( sce.getServletContext().getInitParameter("banedk_timeout") ); CircuitBreakerManager mgr = CircuitBreakerManager.getManager(); AccountingCircuitBreaker banedk = new AccountingCircuitBreaker("banedk", threshold, timeout); banedk.setNotifier( new JavaLogNotifier() ); mgr.addCircuitBreaker( banedk ); JMXWrapper.registerAllCircuitBreakers(); } /** * @see ServletContextListener#contextDestroyed(ServletContextEvent) */ public void contextDestroyed(ServletContextEvent sce) { logger.warning("Context Destroyed"); CircuitBreakerManager.getManager().removeCircuitBreaker("banedk"); JMXWrapper.unregisterAllCircuitBreakers(); } }