30
30
import java .util .jar .JarFile ;
31
31
import java .util .logging .Level ;
32
32
import javax .servlet .SessionTrackingMode ;
33
- import org .eclipse .jetty .http .MimeTypes ;
33
+ import org .eclipse .jetty .ee8 .webapp .WebAppContext ;
34
+ import org .eclipse .jetty .ee8 .websocket .server .config .JettyWebSocketServletContainerInitializer ;
34
35
import org .eclipse .jetty .security .LoginService ;
35
- import org .eclipse .jetty .server .Handler ;
36
36
import org .eclipse .jetty .server .RequestLog ;
37
37
import org .eclipse .jetty .server .Server ;
38
- import org .eclipse .jetty .server .handler .RequestLogHandler ;
39
38
import org .eclipse .jetty .server .handler .gzip .GzipHandler ;
40
- import org .eclipse .jetty .webapp .WebAppContext ;
41
- import org .eclipse .jetty .websocket .server .config .JettyWebSocketServletContainerInitializer ;
42
39
import winstone .cmdline .CompressionScheme ;
43
40
import winstone .cmdline .Option ;
44
41
@@ -55,7 +52,6 @@ public class HostConfiguration {
55
52
private Map <String , String > args ;
56
53
private Map <String , WebAppContext > webapps ;
57
54
private ClassLoader commonLibCL ;
58
- private MimeTypes mimeTypes = new MimeTypes ();
59
55
private final LoginService loginService ;
60
56
61
57
public HostConfiguration (Server server , String hostname , ClassLoader commonLibCL , @ NonNull Map <String , String > args )
@@ -85,7 +81,11 @@ public HostConfiguration(Server server, String hostname, ClassLoader commonLibCL
85
81
// trim off the trailing '/' that Jetty doesn't like
86
82
prefix = prefix .substring (0 , prefix .length () - 1 );
87
83
}
88
- Handler handler = configureAccessLog (create (getWebRoot (webroot , warfile ), prefix ), "webapp" );
84
+ WebAppContext webAppContext = create (getWebRoot (webroot , warfile ), prefix );
85
+ RequestLog requestLog = configureAccessLog ("webapp" );
86
+ if (requestLog != null ) {
87
+ server .setRequestLog (requestLog );
88
+ }
89
89
90
90
{ // load additional mime types
91
91
loadBuiltinMimeTypes ();
@@ -100,7 +100,7 @@ public HostConfiguration(Server server, String hostname, ClassLoader commonLibCL
100
100
}
101
101
String extension = mapping .substring (0 , delimPos );
102
102
String mimeType = mapping .substring (delimPos + 1 );
103
- this . mimeTypes .addMimeMapping (extension .toLowerCase (), mimeType );
103
+ server . getMimeTypes () .addMimeMapping (extension .toLowerCase (), mimeType );
104
104
}
105
105
}
106
106
}
@@ -109,11 +109,11 @@ public HostConfiguration(Server server, String hostname, ClassLoader commonLibCL
109
109
switch (compressionScheme ) {
110
110
case GZIP :
111
111
GzipHandler gzipHandler = new GzipHandler ();
112
- gzipHandler .setHandler (handler );
112
+ gzipHandler .setHandler (webAppContext );
113
113
server .setHandler (gzipHandler );
114
114
break ;
115
115
case NONE :
116
- server .setHandler (handler );
116
+ server .setHandler (webAppContext );
117
117
break ;
118
118
default :
119
119
throw new IllegalArgumentException ("Unexpected compression scheme: " + compressionScheme );
@@ -132,7 +132,8 @@ private void loadBuiltinMimeTypes() {
132
132
Properties props = new Properties ();
133
133
props .load (in );
134
134
for (Entry <Object , Object > e : props .entrySet ()) {
135
- mimeTypes .addMimeMapping (e .getKey ().toString (), e .getValue ().toString ());
135
+ server .getMimeTypes ()
136
+ .addMimeMapping (e .getKey ().toString (), e .getValue ().toString ());
136
137
}
137
138
} catch (IOException e ) {
138
139
throw new UncheckedIOException ("Failed to load the built-in MIME types" , e );
@@ -143,24 +144,21 @@ private void loadBuiltinMimeTypes() {
143
144
* @param webAppName
144
145
* Unique name given to the access logger.
145
146
*/
146
- private Handler configureAccessLog (Handler handler , String webAppName ) {
147
+ private RequestLog configureAccessLog (String webAppName ) {
147
148
try {
148
149
Class <? extends RequestLog > loggerClass =
149
150
Option .ACCESS_LOGGER_CLASSNAME .get (args , RequestLog .class , commonLibCL );
150
151
if (loggerClass != null ) {
151
152
// Build the realm
152
153
Constructor <? extends RequestLog > loggerConstr = loggerClass .getConstructor (String .class , Map .class );
153
- RequestLogHandler rlh = new RequestLogHandler ();
154
- rlh .setHandler (handler );
155
- rlh .setRequestLog (loggerConstr .newInstance (webAppName , args ));
156
- return rlh ;
154
+ return loggerConstr .newInstance (webAppName , args );
157
155
} else {
158
156
Logger .log (Level .FINER , Launcher .RESOURCES , "WebAppConfig.LoggerDisabled" );
159
157
}
160
158
} catch (Throwable err ) {
161
159
Logger .log (Level .SEVERE , Launcher .RESOURCES , "WebAppConfig.LoggerError" , "" , err );
162
160
}
163
- return handler ;
161
+ return null ;
164
162
}
165
163
166
164
private WebAppContext create (File app , String prefix ) {
@@ -202,7 +200,6 @@ public void postConfigure() throws Exception {
202
200
wac .getSecurityHandler ().setLoginService (loginService );
203
201
wac .setThrowUnavailableOnStartupException (
204
202
true ); // if boot fails, abort the process instead of letting empty Jetty run
205
- wac .setMimeTypes (mimeTypes );
206
203
wac .getSessionHandler ().setSessionTrackingModes (Set .of (SessionTrackingMode .COOKIE ));
207
204
wac .getSessionHandler ().setSessionCookie (WinstoneSession .SESSION_COOKIE_NAME );
208
205
this .webapps .put (wac .getContextPath (), wac );
0 commit comments