HTTP/2 avec Undertow


Undertow est un serveur Web Java avec lequel il est facile de démarrer, même avec SSL.

Il est tout aussi simple d'activer HTTP/2. Du moins dans son mode le plus classique, avec ALPN.

HTTP/2 avec ALPN

Le prérequis d'ALPN, c'est d'avoir du TLS 1.2.

Ensuite, il suffit d'ajouter l'option ENABLE_HTTP2.

       Undertow http2Server = Undertow.builder()
               .addHttpsListener(8002, "localhost", buildSslContext())
               .setServerOption(UndertowOptions.ENABLE_HTTP2, true)
               .setHandler(Start::hello)
               .build();
       http2Server.start();

Jusqu'à Undertow 1.3.x, avec Java 8, il fallait l'extension ALPN de Jetty pour que HTTP/2 fonctionne. Sans cela, une exception était lancée à l'initialisation du listener.

Depuis Undertow 1.4, la négociation ALPN a été redéveloppée et l'extension n'est plus nécessaire. On peut faire du HTTP/2 avec Java 8, sans modifier le bootclasspath.