RFR: 8245095: Implementation of JEP 408: Simple Web Server

Julia Boes jboes at openjdk.java.net
Tue Sep 14 16:10:09 UTC 2021

On Tue, 14 Sep 2021 13:47:48 GMT, Andrey Turbanov <github.com+741251+turbanoff at openjdk.org> wrote:

>> This change implements a simple web server that can be run on the command-line with `java -m jdk.httpserver`.
>> This is facilitated by adding an entry point for the `jdk.httpserver` module, an implementation class whose main method is run when the above command is executed. This is the first such module entry point in the JDK.
>> The server is a minimal HTTP server that serves the static files of a given directory, similar to existing alternatives on other platforms and convenient for testing, development, and debugging.
>> Additionally, a small API is introduced for programmatic creation and customization.
>> Testing: tier1-3.
> src/jdk.httpserver/share/classes/com/sun/net/httpserver/Headers.java line 288:
>> 286:     }
>> 287: 
>> 288:     private static final Headers EMPTY = new UnmodifiableHeaders(new Headers());
> IDEA warns here:
>>Referencing subclass UnmodifiableHeaders from superclass Headers initializer might lead to class loading deadlock
>>Such references can cause JVM-level deadlocks in multithreaded environment, when one thread tries to load the superclass and another thread tries to load the subclass at the same time.

Interesting, thanks for noting. We can return a new instance instead on line 307, the only place the constant is used.


PR: https://git.openjdk.java.net/jdk/pull/5505

More information about the core-libs-dev mailing list