Undertow is a powerful and lightweight web server written in Java, supporting both blocking and non blocking I/O. With a non-blocking programming model, when the client sends a request to a server, most of the time it will be handled asynchronously and in two steps.
An asynchronous call returns immediately, without waiting for the I/O to complete. The completion of the I/O is later communicated to the caller through the triggering of a callback routine that is executed outside the linear control flow of the application.
Undertow relies on NIO to provide a powerful API, enabling users to build high-performance deployments in a composition architecture way. With Undertow, users can build a web server by combining small single-purpose handlers. Undertow supports Servlet 3.1, Websockets (JSR-356), and reverse proxy.