--- android/TrainInfoService/src/dk/thoerup/traininfoservice/CircuitBreakerListener.java 2009/10/08 12:19:42 421 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/CircuitBreakerListener.java 2011/04/19 17:17:09 1316 @@ -4,17 +4,22 @@ import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; +import javax.servlet.ServletRegistration; +import javax.servlet.annotation.WebListener; + +import dk.thoerup.circuitbreaker.AccountingCircuitBreaker; +import dk.thoerup.circuitbreaker.CircuitBreakerManager; +import dk.thoerup.circuitbreaker.LoggingCircuitBreaker; +import dk.thoerup.circuitbreaker.notification.CompositeNotifier; +import dk.thoerup.circuitbreaker.notification.JavaLogNotifier; +import dk.thoerup.circuitbreaker.notification.MailNotifier; -import dk.thoerup.curcuitbreaker.AccountingCircuitBreaker; -import dk.thoerup.curcuitbreaker.CircuitBreaker; -import dk.thoerup.curcuitbreaker.CircuitBreakerManager; -import dk.thoerup.curcuitbreaker.jmx.JMXWrapper; -import dk.thoerup.curcuitbreaker.notification.JavaLogNotifier; /** * Application Lifecycle Listener implementation class JmxListener * */ +@WebListener public class CircuitBreakerListener implements ServletContextListener { Logger logger = Logger.getLogger(CircuitBreakerListener.class.getName()); @@ -28,13 +33,30 @@ public void contextInitialized(ServletContextEvent sce) { logger.warning("Context Init"); + TraininfoSettings settings = SettingsListener.loadSettings( sce.getServletContext() ); + CircuitBreakerManager mgr = CircuitBreakerManager.getManager(); - AccountingCircuitBreaker banedk = new AccountingCircuitBreaker("banedk", 5, 20000); - banedk.setNotifier( new JavaLogNotifier() ); - mgr.addCircuitBreaker( banedk ); + 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", settings); + banedk.setNotifier(notif); + mgr.addCircuitBreaker( banedk ); + - JMXWrapper.registerAllCircuitBreakers(); + AccountingCircuitBreaker metro = new AccountingCircuitBreaker("metro", settings); + metro.setNotifier(notif); + mgr.addCircuitBreaker( metro ); + + + ServletRegistration.Dynamic dynconf = sce.getServletContext().addServlet("circuitbreaker", dk.thoerup.circuitbreaker.web.CircuitBreakerServletBase.class ); + dynconf.addMapping("/CircuitBreakerServlet"); + dynconf.setInitParameter("readonly", "0"); + + //JMXWrapper.registerAllCircuitBreakers(); } /** @@ -42,7 +64,9 @@ */ public void contextDestroyed(ServletContextEvent sce) { logger.warning("Context Destroyed"); - JMXWrapper.unregisterAllCircuitBreakers(); + CircuitBreakerManager.getManager().shutdown(); + + //JMXWrapper.unregisterAllCircuitBreakers(); } }