I am using a simple Http server from com.sun.net.httpserver
, as described in simple HTTP server in Java using only Java SE API.
Everything works fine, however I am unsure how can I cleanly shutdown the server once I no longer need it. I do not want to stop the server while it is still sending the data for some request, only once it is idle.
My particular scenario is a desktop application performing OAuth dance. I use a local web server embedded in the application to provide a callback response, the application launches a desktop browser to show the server response using java.awt.Desktop.browse
API.
I have tried calling HttpServer.stop(0)
directly from my HttpHandler.handle
function, after I have written the response page into the HttpExchange
response output stream, but this is too early, the browser shows ERR_EMPTY_RESPONSE
.
The same happens when I stop the server once my main application has finished its work - this is often too early, the HttpServer
has not completed sending the data out yet at that moment.
I could provide a few seconds delay value to stop, but I would like to achieve a proper and clean synchronization.
What is a proper solution to this?