package dk.thoerup.traininfoservice; import java.util.logging.Logger; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import dk.thoerup.circuitbreaker.AccountingCircuitBreaker; import dk.thoerup.circuitbreaker.LoggingCircuitBreaker; import dk.thoerup.circuitbreaker.CircuitBreakerManager; import dk.thoerup.circuitbreaker.jmx.JMXWrapper; import dk.thoerup.circuitbreaker.notification.*; /** * Application Lifecycle Listener implementation class JmxListener * */ @WebListener 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(); CompositeNotifier notif = new CompositeNotifier(); notif.addNotifier( new JavaLogNotifier() ); notif.addNotifier( new MailNotifier("traininfo@t-hoerup.dk", "torben@t-hoerup.dk", "192.168.10.5") ); LoggingCircuitBreaker banedk = new LoggingCircuitBreaker("banedk", threshold, timeout); banedk.setNotifier(notif); mgr.addCircuitBreaker( banedk ); AccountingCircuitBreaker metro = new AccountingCircuitBreaker("metro", threshold, timeout); metro.setNotifier(notif); mgr.addCircuitBreaker( metro ); //JMXWrapper.registerAllCircuitBreakers(); } /** * @see ServletContextListener#contextDestroyed(ServletContextEvent) */ public void contextDestroyed(ServletContextEvent sce) { logger.warning("Context Destroyed"); CircuitBreakerManager.getManager().shutdown(); //JMXWrapper.unregisterAllCircuitBreakers(); } }