1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.eclipse.jetty.maven.plugin;
21
22 import java.io.File;
23 import java.io.IOException;
24
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.eclipse.jetty.annotations.AnnotationConfiguration;
28 import org.eclipse.jetty.util.IO;
29 import org.eclipse.jetty.util.resource.Resource;
30 import org.eclipse.jetty.util.thread.QueuedThreadPool;
31
32
33
34
35
36
37
38
39
40 public class JettyEffectiveWebXml extends JettyRunMojo
41 {
42
43
44
45
46
47
48
49 protected File target;
50
51
52
53
54
55
56 protected File effectiveWebXml;
57
58
59 protected boolean deleteOnExit = true;
60
61
62
63
64
65 public void execute() throws MojoExecutionException, MojoFailureException
66 {
67 super.execute();
68 }
69
70
71 @Override
72 public void startJetty() throws MojoExecutionException
73 {
74
75
76
77
78 QueuedThreadPool tpool = null;
79
80 try
81 {
82 printSystemProperties();
83
84
85
86 applyJettyXml ();
87
88 ServerSupport.configureHandlers(server, null);
89 ServerSupport.configureDefaultConfigurationClasses(server);
90
91
92 configureWebApplication();
93
94
95
96 webApp.setCopyWebDir(false);
97 webApp.setCopyWebInf(false);
98 webApp.setGenerateQuickStart(true);
99
100
101
102 if (webApp.getQuickStartWebDescriptor() == null)
103 {
104 if (effectiveWebXml == null)
105 {
106 deleteOnExit = true;
107 effectiveWebXml = new File(target, "effective-web.xml");
108 effectiveWebXml.deleteOnExit();
109 }
110
111 Resource descriptor = Resource.newResource(effectiveWebXml);
112
113 if (!effectiveWebXml.getParentFile().exists())
114 effectiveWebXml.getParentFile().mkdirs();
115 if (!effectiveWebXml.exists())
116 effectiveWebXml.createNewFile();
117
118 webApp.setQuickStartWebDescriptor(descriptor);
119 }
120
121 ServerSupport.addWebApplication(server, webApp);
122
123
124
125 tpool = server.getBean(QueuedThreadPool.class);
126 if (tpool != null)
127 tpool.start();
128 else
129 webApp.setAttribute(AnnotationConfiguration.MULTI_THREADED, Boolean.FALSE.toString());
130
131 webApp.start();
132
133 }
134 catch (Exception e)
135 {
136 throw new MojoExecutionException("Effective web.xml generation failed", e);
137 }
138 finally
139 {
140 try {webApp.stop();}catch (Exception x) {};
141
142 try {if (tpool != null) tpool.stop();} catch (Exception x) {};
143 }
144
145
146 if (deleteOnExit)
147 {
148 try
149 {
150
151 getLog().info(IO.toString(webApp.getQuickStartWebDescriptor().getInputStream()));
152 }
153 catch (IOException e)
154 {
155 throw new MojoExecutionException("Unable to output effective web.xml", e);
156 }
157
158 }
159
160 }
161 }