Should SimpleFileServer#createFileServer() mention that the returned server isn't started?
Jaikiran Pai
jai.forums2013 at gmail.com
Thu Dec 2 12:45:34 UTC 2021
Right now, the com.sun.net.httpserver.SimpleFileServer#createFileServer
states this:
"
* Creates a <i>file server</i> the serves files from a given path.
*
* <p> The server is configured with an initial context that maps the
* URI {@code path} to a <i>file handler</i>. The <i>file
handler</i> is
* created as if by an invocation of
* {@link #createFileHandler(Path)
createFileHandler(rootDirectory)}, and is
* associated to a context created as if by an invocation of
* {@link HttpServer#createContext(String) createContext("/")}.
...
"
The returned HttpServer isn't actually started and is expected to be
started explicitly by a call to HttpServer.start(), but the javadoc
doesn't make a mention of it. Should the javadoc be updated to add this
note? I see that the class level javadoc has an example which does show
that the returned server has to be explicitly started:
* <p> Example of a simple file server:
* <pre>{@code
* var addr = new InetSocketAddress(8080);
* var server = SimpleFileServer.createFileServer(addr,
Path.of("/some/path"), OutputLevel.INFO);
* server.start();
* }</pre>
In one of my tests, I ended up creating a file server using this API but
didn't call start() on the returned server which lead to a hung HTTP
request from clients (a different topic/investigation). So, I think, if
the javadoc of this API would have an explicit note about the returned
server not being started, that would be helpful.
-Jaikiran
More information about the net-dev
mailing list