Name
jwebserver - launch the Java Simple Web Server
Synopsis
jwebserver
[options]
- options
- Command-line options. For a detailed description of the options, see Options.
Description
The jwebserver
tool provides a minimal HTTP server,
designed to be used for prototyping, testing, and debugging. It serves a
single directory hierarchy, and only serves static files. Only HTTP/1.1
is supported; HTTP/2 and HTTPS are not supported.
Only idempotent HEAD and GET requests are served. Any other requests
receive a 501 - Not Implemented
or a
405 - Not Allowed
response. GET requests are mapped to the
directory being served, as follows:
- If the requested resource is a file, its content is served.
- If the requested resource is a directory that contains an index file, the content of the index file is served.
- Otherwise, the names of all files and subdirectories of the directory are listed. Symbolic links and hidden files are not listed or served.
MIME types are configured automatically, using the built-in table.
For example, .html
files are served as
text/html
and .java
files are served as
text/plain
.
jwebserver
is located in the jdk.httpserver module, and
can alternatively be started with java -m jdk.httpserver
.
It is based on the web server implementation in the
com.sun.net.httpserver
package. The
com.sun.net.httpserver.SimpleFileServer
class provides a
programmatic way to retrieve the server and its components for reuse and
extension.
Usage
jwebserver [-b bind address] [-p port] [-d directory]
[-o none|info|verbose] [-h to show options]
[-version to show version information]
Options
-h
or-?
or--help
- Prints the help message and exits.
-b
addr or--bind-address
addr-
Specifies the address to bind to. Default: 127.0.0.1 or ::1 (loopback).
For all interfaces use
-b 0.0.0.0
or-b ::
. -d
dir or--directory
dir- Specifies the directory to serve. Default: current directory.
-o
level or--output
level-
Specifies the output format.
none
|info
|verbose
. Default:info
. -p
port or--port
port- Specifies the port to listen on. Default: 8000.
-version
or--version
- Prints the version information and exits.
To stop the server, press Ctrl + C
.
Starting the Server
The following command starts the Simple Web Server:
$ jwebserver
If startup is successful, the server prints a message to
System.out
listing the local address and the absolute path
of the directory being served. For example:
$ jwebserver
Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
Serving /cwd and subdirectories on 127.0.0.1 port 8000
URL http://127.0.0.1:8000/
Configuration
By default, the server runs in the foreground and binds to the
loopback address and port 8000. This can be changed with the
-b
and -p
options. For example, to bind the
Simple Web Server to all interfaces, use:
$ jwebserver -b 0.0.0.0
Serving /cwd and subdirectories on 0.0.0.0 (all interfaces) port 8000
URL http://123.456.7.891:8000/
Note that this makes the web server accessible to all hosts on the network. Do not do this unless you are sure the server cannot leak any sensitive information.
As another example, use the following command to run on port 9000:
$ jwebserver -p 9000
By default, the files of the current directory are served. A
different directory can be specified with the -d
option.
By default, every request is logged on the console. The output looks like this:
127.0.0.1 - - [10/Feb/2021:14:34:11 +0000] "GET /some/subdirectory/ HTTP/1.1" 200 -
Logging output can be changed with the -o
option. The
default setting is info
. The verbose
setting
additionally includes the request and response headers as well as the
absolute path of the requested resource.
Stopping the Server
Once started successfully, the server runs until it is stopped. On
Unix platforms, the server can be stopped by sending it a
SIGINT
signal (Ctrl+C
in a terminal
window).
Help Option
The -h
option displays a help message describing the
usage and the options of the jwebserver
.