1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.maven.plugin;
20
21
22 import org.eclipse.jetty.server.Handler;
23 import org.eclipse.jetty.server.RequestLog;
24 import org.eclipse.jetty.server.handler.ContextHandlerCollection;
25 import org.eclipse.jetty.server.handler.DefaultHandler;
26 import org.eclipse.jetty.server.handler.HandlerCollection;
27 import org.eclipse.jetty.server.handler.RequestLogHandler;
28 import org.eclipse.jetty.util.resource.Resource;
29 import org.eclipse.jetty.webapp.WebAppContext;
30
31
32
33
34
35
36
37 public class JettyServer extends org.eclipse.jetty.server.Server
38 {
39 public static final JettyServer __instance = new JettyServer();
40
41 private RequestLog requestLog;
42 private ContextHandlerCollection contexts;
43
44
45
46
47
48
49 public JettyServer()
50 {
51 super();
52 setStopAtShutdown(true);
53
54 Resource.setDefaultUseCaches(false);
55 }
56
57
58 public void setRequestLog (RequestLog requestLog)
59 {
60 this.requestLog = requestLog;
61 }
62
63
64
65
66 public void doStart() throws Exception
67 {
68 super.doStart();
69 }
70
71
72
73
74
75 public void addWebApplication(WebAppContext webapp) throws Exception
76 {
77 contexts.addHandler (webapp);
78 }
79
80
81
82
83
84
85
86
87
88 public void configureHandlers () throws Exception
89 {
90 DefaultHandler defaultHandler = new DefaultHandler();
91 RequestLogHandler requestLogHandler = new RequestLogHandler();
92 if (this.requestLog != null)
93 requestLogHandler.setRequestLog(this.requestLog);
94
95 contexts = (ContextHandlerCollection)super.getChildHandlerByClass(ContextHandlerCollection.class);
96 if (contexts==null)
97 {
98 contexts = new ContextHandlerCollection();
99 HandlerCollection handlers = (HandlerCollection)super.getChildHandlerByClass(HandlerCollection.class);
100 if (handlers==null)
101 {
102 handlers = new HandlerCollection();
103 super.setHandler(handlers);
104 handlers.setHandlers(new Handler[]{contexts, defaultHandler, requestLogHandler});
105 }
106 else
107 {
108 handlers.addHandler(contexts);
109 }
110 }
111 }
112 }