--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/ContextListener.java 2015/02/23 12:30:41 2337 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/ContextListener.java 2015/02/23 15:49:00 2352 @@ -3,8 +3,16 @@ import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; +import javax.servlet.ServletRegistration; import javax.servlet.annotation.WebListener; +import dk.daoas.daoadresseservice.admin.ServiceConfig; +import dk.thoerup.circuitbreaker.AccountingCircuitBreaker; +import dk.thoerup.circuitbreaker.CircuitBreakerManager; +import dk.thoerup.circuitbreaker.web.CircuitBreakerServletBase; +import dk.thoerup.webconfig.ConfigServlet; +import dk.thoerup.webconfig.ContextConfigLoader; + /** * Application Lifecycle Listener implementation class ContextListener * @@ -23,17 +31,63 @@ // TODO Auto-generated method stub } + @Override public void contextInitialized(ServletContextEvent ctxtEvt) { System.out.println("Starting DAO Context"); ServletContext ctxt = ctxtEvt.getServletContext(); - DataLoader load = new DataLoader(ctxt); + + ServiceConfig conf = initConfig(ctxt); + + initDataLoader(ctxt, conf); + + initCircuitBreakers(ctxt, conf); + + + System.out.println("DAO Context done"); + } + + private void initDataLoader(ServletContext ctxt, ServiceConfig conf) { + DataLoader load = new DataLoader(ctxt,conf); ctxt.setAttribute("dataloader", load); load.doLoad(); + } + + + private ServiceConfig initConfig(ServletContext ctxt) { + ServiceConfig conf = new ServiceConfig(); + new ContextConfigLoader(ctxt).loadConfig(conf); + ctxt.setAttribute("config", conf); - System.out.println("DAO Context done"); + // ///////////////////////////////////// + ConfigServlet servlet = new ConfigServlet(); + servlet.setConfigObject( conf ); + ServletRegistration.Dynamic dynconf = ctxt.addServlet("webconfig", servlet ); + dynconf.addMapping("/ConfigServlet"); + + return conf; + + } + + private void initCircuitBreakers(ServletContext ctxt, ServiceConfig conf) { + CircuitBreakerManager mgr = CircuitBreakerManager.getManager(); + + AccountingCircuitBreaker osm = new AccountingCircuitBreaker("osm", conf); + mgr.addCircuitBreaker( osm ); + + AccountingCircuitBreaker google = new AccountingCircuitBreaker("google", conf); + mgr.addCircuitBreaker( google ); + + + // + CircuitBreakerServletBase servlet = new CircuitBreakerServletBase(); + ServletRegistration.Dynamic dynconf = ctxt.addServlet("circuitbreaker", servlet); + dynconf.addMapping("/CircuitBreakerServlet"); + dynconf.setInitParameter("readonly", "1"); + } + }