1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.webapp;
20
21 import java.io.IOException;
22 import java.net.MalformedURLException;
23
24 import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
25 import org.eclipse.jetty.servlet.ServletHandler;
26 import org.eclipse.jetty.util.log.Log;
27 import org.eclipse.jetty.util.log.Logger;
28 import org.eclipse.jetty.util.resource.Resource;
29
30
31
32
33
34
35 public class WebXmlConfiguration extends AbstractConfiguration
36 {
37 private static final Logger LOG = Log.getLogger(WebXmlConfiguration.class);
38
39
40
41
42
43
44 @Override
45 public void preConfigure (WebAppContext context) throws Exception
46 {
47
48 String defaultsDescriptor = context.getDefaultsDescriptor();
49 if (defaultsDescriptor != null && defaultsDescriptor.length() > 0)
50 {
51 Resource dftResource = Resource.newSystemResource(defaultsDescriptor);
52 if (dftResource == null)
53 dftResource = context.newResource(defaultsDescriptor);
54 context.getMetaData().setDefaults (dftResource);
55 }
56
57
58 Resource webxml = findWebXml(context);
59 if (webxml != null)
60 {
61 context.getMetaData().setWebXml(webxml);
62 context.getServletContext().setEffectiveMajorVersion(context.getMetaData().getWebXml().getMajorVersion());
63 context.getServletContext().setEffectiveMinorVersion(context.getMetaData().getWebXml().getMinorVersion());
64 }
65
66
67 for (String overrideDescriptor : context.getOverrideDescriptors())
68 {
69 if (overrideDescriptor != null && overrideDescriptor.length() > 0)
70 {
71 Resource orideResource = Resource.newSystemResource(overrideDescriptor);
72 if (orideResource == null)
73 orideResource = context.newResource(overrideDescriptor);
74 context.getMetaData().addOverride(orideResource);
75 }
76 }
77 }
78
79
80
81
82
83
84 @Override
85 public void configure (WebAppContext context) throws Exception
86 {
87
88 if (context.isStarted())
89 {
90 LOG.debug("Cannot configure webapp after it is started");
91 return;
92 }
93
94 context.getMetaData().addDescriptorProcessor(new StandardDescriptorProcessor());
95 }
96
97
98 protected Resource findWebXml(WebAppContext context) throws IOException, MalformedURLException
99 {
100 String descriptor = context.getDescriptor();
101 if (descriptor != null)
102 {
103 Resource web = context.newResource(descriptor);
104 if (web.exists() && !web.isDirectory()) return web;
105 }
106
107 Resource web_inf = context.getWebInf();
108 if (web_inf != null && web_inf.isDirectory())
109 {
110
111 Resource web = web_inf.addPath("web.xml");
112 if (web.exists()) return web;
113 if (LOG.isDebugEnabled())
114 LOG.debug("No WEB-INF/web.xml in " + context.getWar() + ". Serving files and default/dynamic servlets only");
115 }
116 return null;
117 }
118
119
120
121 @Override
122 public void deconfigure (WebAppContext context) throws Exception
123 {
124 context.setWelcomeFiles(null);
125
126 if (context.getErrorHandler() instanceof ErrorPageErrorHandler)
127 ((ErrorPageErrorHandler)
128 context.getErrorHandler()).setErrorPages(null);
129
130
131 }
132 }