JWEBSERVER(1) JDK Commands JWEBSERVER(1)

# [NAME](#NAME)

jwebserver - launch the Java Simple Web Server

# [SYNOPSIS](#SYNOPSIS)

jwebserver \[*options*]

[*options*](#options)

Command-line options. For a detailed description of the options, see **Options**.

# [DESCRIPTION](#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](#USAGE)

```

jwebserver [-b bind address] [-p port] [-d directory]


           [-o none|info|verbose] [-h to show options]


           [-version to show version information]
```

# [OPTIONS](#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](#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](#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](#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](#HELP_OPTION)

The -h option displays a help message describing the usage and the options of the jwebserver.

2023 JDK 21

---

Document: jwebserver(1) from adoptium-openjdk-21 21.0.13.9-r0 (Chainguard OS)
Source: https://github.com/adoptium/jdk21u.git
