@@ -78,7 +78,7 @@ protected void startWebServer(final String resourceBase) throws Exception {
78
78
if (server_ != null ) {
79
79
throw new IllegalStateException ("startWebServer() can not be called twice" );
80
80
}
81
- server_ = buildServer (PORT );
81
+ final Server server = buildServer (PORT );
82
82
83
83
final WebAppContext context = new WebAppContext ();
84
84
context .setContextPath ("/" );
@@ -92,10 +92,11 @@ protected void startWebServer(final String resourceBase) throws Exception {
92
92
93
93
final HandlerList handlers = new HandlerList ();
94
94
handlers .setHandlers (new Handler []{resourceHandler , context });
95
- server_ .setHandler (handlers );
96
- server_ .setHandler (resourceHandler );
95
+ server .setHandler (handlers );
96
+ server .setHandler (resourceHandler );
97
97
98
- tryStart (PORT , server_ );
98
+ tryStart (PORT , server );
99
+ server_ = server ;
99
100
}
100
101
101
102
/**
@@ -202,7 +203,7 @@ protected void startWebServer(final String resourceBase, final String[] classpat
202
203
if (server_ != null ) {
203
204
throw new IllegalStateException ("startWebServer() can not be called twice" );
204
205
}
205
- server_ = buildServer (PORT );
206
+ final Server server = buildServer (PORT );
206
207
207
208
final WebAppContext context = new WebAppContext ();
208
209
context .setContextPath ("/" );
@@ -220,9 +221,10 @@ protected void startWebServer(final String resourceBase, final String[] classpat
220
221
}
221
222
}
222
223
context .setClassLoader (loader );
223
- server_ .setHandler (context );
224
+ server .setHandler (context );
224
225
225
- tryStart (PORT , server_ );
226
+ tryStart (PORT , server );
227
+ server_ = server ;
226
228
}
227
229
228
230
/**
@@ -378,6 +380,10 @@ public static void tryStart(final int port, final Server server) throws Exceptio
378
380
}
379
381
catch (final BindException e ) {
380
382
if (System .currentTimeMillis () > maxWait ) {
383
+ // destroy the server to free all associated resources
384
+ server .stop ();
385
+ server .destroy ();
386
+
381
387
throw (BindException ) new BindException ("Port " + port + " is already in use" ).initCause (e );
382
388
}
383
389
Thread .sleep (200 );
0 commit comments