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

  ViewVC Help
Powered by ViewVC 1.1.20