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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20