/[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 2608 - (show 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 package dk.daoas.daoadresseservice;
2
3 import java.io.FileReader;
4 import java.io.IOException;
5 import java.util.Properties;
6
7 import javax.servlet.ServletContext;
8 import javax.servlet.ServletContextEvent;
9 import javax.servlet.ServletContextListener;
10 import javax.servlet.ServletRegistration;
11 import javax.servlet.annotation.WebListener;
12
13 import org.apache.commons.lang3.SystemUtils;
14
15 import com.jcabi.manifests.Manifests;
16 import com.jcabi.manifests.ServletMfs;
17
18 import dk.daoas.daoadresseservice.admin.ServiceConfig;
19 import dk.thoerup.circuitbreaker.CircuitBreaker;
20 import dk.thoerup.circuitbreaker.CircuitBreakerManager;
21 import dk.thoerup.circuitbreaker.statistics.AccountingStatistics;
22 import dk.thoerup.circuitbreaker.web.CircuitBreakerServletBase;
23 import dk.thoerup.webconfig.ConfigServlet;
24 import dk.thoerup.webconfig.PropertiesConfigLoader;
25
26 /**
27 * Application Lifecycle Listener implementation class ContextListener
28 *
29 */
30 @WebListener
31 public class ContextListener implements ServletContextListener {
32
33
34
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 @Override
45 public void contextInitialized(ServletContextEvent ctxtEvt) {
46 System.out.println("Starting DAO Context");
47
48
49
50 ServletContext ctxt = ctxtEvt.getServletContext();
51
52 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
60 initDataLoader(ctxt, conf);
61
62 initCircuitBreakers(ctxt, conf);
63
64
65 try {
66 Manifests.DEFAULT.append(new ServletMfs(ctxt));
67 } catch (Exception e) {
68 System.out.println("Error loading config " + e.getMessage());
69 }
70
71 System.out.println("DAO Context done");
72 }
73
74
75
76
77 private ServiceConfig initConfig(ServletContext ctxt) throws IOException {
78
79 final String CONF_FILE_NAME = "daoadresseservice.conf";
80
81
82 ServiceConfig conf = new ServiceConfig();
83
84 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
97 new PropertiesConfigLoader(propsFile).loadConfig(conf);
98
99
100 ctxt.setAttribute("config", conf);
101
102 // /////////////////////////////////////
103 ConfigServlet servlet = new ConfigServlet();
104 servlet.setConfigObject( conf );
105 ServletRegistration.Dynamic dynconf = ctxt.addServlet("webconfig", servlet );
106 dynconf.addMapping("/ConfigServlet");
107
108 return conf;
109 }
110
111 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 private void initCircuitBreakers(ServletContext ctxt, ServiceConfig conf) {
118 CircuitBreakerManager mgr = CircuitBreakerManager.getManager();
119
120 CircuitBreaker osm = new CircuitBreaker("osm", conf);
121 osm.setStatistics( new AccountingStatistics() );
122 mgr.addCircuitBreaker( osm );
123
124 CircuitBreaker google = new CircuitBreaker("google", conf);
125 google.setStatistics( new AccountingStatistics() );
126 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
138 }

  ViewVC Help
Powered by ViewVC 1.1.20