/[projects]/dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/ContextListener.java
ViewVC logotype

Annotation of /dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/ContextListener.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2608 - (hide annotations) (download)
Wed Jul 15 06:52:05 2015 UTC (8 years, 10 months ago) by torben
File size: 4062 byte(s)
Separate database interface and implementation (preparation for mocking and more unit tests)
1 torben 2274 package dk.daoas.daoadresseservice;
2    
3 torben 2393 import java.io.FileReader;
4     import java.io.IOException;
5     import java.util.Properties;
6    
7 torben 2274 import javax.servlet.ServletContext;
8     import javax.servlet.ServletContextEvent;
9     import javax.servlet.ServletContextListener;
10 torben 2346 import javax.servlet.ServletRegistration;
11 torben 2274 import javax.servlet.annotation.WebListener;
12    
13 torben 2393 import org.apache.commons.lang3.SystemUtils;
14    
15 torben 2605 import com.jcabi.manifests.Manifests;
16     import com.jcabi.manifests.ServletMfs;
17    
18 torben 2346 import dk.daoas.daoadresseservice.admin.ServiceConfig;
19 torben 2571 import dk.thoerup.circuitbreaker.CircuitBreaker;
20 torben 2352 import dk.thoerup.circuitbreaker.CircuitBreakerManager;
21 torben 2571 import dk.thoerup.circuitbreaker.statistics.AccountingStatistics;
22 torben 2352 import dk.thoerup.circuitbreaker.web.CircuitBreakerServletBase;
23 torben 2346 import dk.thoerup.webconfig.ConfigServlet;
24 torben 2393 import dk.thoerup.webconfig.PropertiesConfigLoader;
25 torben 2346
26 torben 2274 /**
27     * Application Lifecycle Listener implementation class ContextListener
28     *
29     */
30     @WebListener
31     public class ContextListener implements ServletContextListener {
32 torben 2281
33 torben 2393
34 torben 2274
35    
36     public ContextListener() {
37     // TODO Auto-generated constructor stub
38     }
39    
40     public void contextDestroyed(ServletContextEvent ctxtEvt) {
41     // TODO Auto-generated method stub
42     }
43    
44 torben 2608 @Override
45 torben 2274 public void contextInitialized(ServletContextEvent ctxtEvt) {
46     System.out.println("Starting DAO Context");
47    
48 torben 2605
49    
50 torben 2274 ServletContext ctxt = ctxtEvt.getServletContext();
51 torben 2346
52 torben 2393 ServiceConfig conf = null;
53     try {
54     conf = initConfig(ctxt);
55     } catch (IOException e) {
56     System.out.println("Error loading config " + e.getMessage());
57     throw new RuntimeException(e);
58     }
59 torben 2346
60 torben 2352 initDataLoader(ctxt, conf);
61 torben 2351
62 torben 2352 initCircuitBreakers(ctxt, conf);
63 torben 2605
64 torben 2351
65 torben 2605 try {
66     Manifests.DEFAULT.append(new ServletMfs(ctxt));
67     } catch (Exception e) {
68     System.out.println("Error loading config " + e.getMessage());
69     }
70 torben 2352
71 torben 2346 System.out.println("DAO Context done");
72     }
73    
74 torben 2393
75 torben 2346
76    
77 torben 2393 private ServiceConfig initConfig(ServletContext ctxt) throws IOException {
78    
79     final String CONF_FILE_NAME = "daoadresseservice.conf";
80    
81    
82 torben 2346 ServiceConfig conf = new ServiceConfig();
83 torben 2274
84 torben 2393 String file = null;
85     if (SystemUtils.IS_OS_WINDOWS) {
86     file = "C:\\" + CONF_FILE_NAME;
87     } else {
88     file = "/etc/" + CONF_FILE_NAME;
89     }
90    
91     Properties propsFile = new Properties();
92     try (FileReader reader = new FileReader(file) ) {
93     propsFile.load(reader);
94     }
95    
96 torben 2274
97 torben 2393 new PropertiesConfigLoader(propsFile).loadConfig(conf);
98    
99    
100 torben 2346 ctxt.setAttribute("config", conf);
101 torben 2337
102 torben 2346 // /////////////////////////////////////
103     ConfigServlet servlet = new ConfigServlet();
104     servlet.setConfigObject( conf );
105     ServletRegistration.Dynamic dynconf = ctxt.addServlet("webconfig", servlet );
106     dynconf.addMapping("/ConfigServlet");
107 torben 2351
108 torben 2393 return conf;
109 torben 2274 }
110 torben 2346
111 torben 2393 private void initDataLoader(ServletContext ctxt, ServiceConfig conf) {
112     DataLoader load = new DataLoader(ctxt,conf);
113     ctxt.setAttribute("dataloader", load);
114     load.doLoad();
115     }
116    
117 torben 2352 private void initCircuitBreakers(ServletContext ctxt, ServiceConfig conf) {
118     CircuitBreakerManager mgr = CircuitBreakerManager.getManager();
119    
120 torben 2571 CircuitBreaker osm = new CircuitBreaker("osm", conf);
121     osm.setStatistics( new AccountingStatistics() );
122 torben 2352 mgr.addCircuitBreaker( osm );
123    
124 torben 2571 CircuitBreaker google = new CircuitBreaker("google", conf);
125     google.setStatistics( new AccountingStatistics() );
126 torben 2352 mgr.addCircuitBreaker( google );
127    
128    
129     //
130     CircuitBreakerServletBase servlet = new CircuitBreakerServletBase();
131     ServletRegistration.Dynamic dynconf = ctxt.addServlet("circuitbreaker", servlet);
132     dynconf.addMapping("/CircuitBreakerServlet");
133     dynconf.setInitParameter("readonly", "1");
134    
135     }
136    
137 torben 2274
138     }

  ViewVC Help
Powered by ViewVC 1.1.20