Analyze HTTP/2 issues when deploying Showcase in JBoss EAP 7.2.4.GA
HTTP/2 VS HTTP/1.1
cf. Blog: HTTP/2 VS HTTP/1.1 cf. Doc: Documentation HTTP/2
Subsystem Undertow
In JBoss EAP 7, the undertow
subsystem allows you to configure web server and servlet container settings.
cf. Doc: JBoss 7.2 config undertow
Configuring HTTP/2
The protocol HTTP/2 has two identifiers:
- h2
The string
h2
corresponds to HTTP/2 over TLS (protocol negotiation via ALPN). - h2c
The string
h2c
corresponds to HTTP/2 over cleartext TCP, it is used to upgrade cleartext HTTP/2 from HTTP/1.1 , not need ALPN.
cf. Wiki: HTTP/1.1 used with HTTP/2 cf. Doc: HTTP/2 Version Identification
If we want to upgrade HTTP/1.1 to cleartext HTTP/2, enable HTTP/2 in the HTTP listener in Undertow. Don't need a https certificate neither ALPN.
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
The client starts an HTTP/1.1 connection and sends an Upgrade: h2c header. If the server supports HTTP/2, it replies with HTTP 101 Switching Protocol status code. The HTTP Upgrade mechanism is used only for cleartext HTTP2 (h2c).
If we want to use HTTP/2 over TLS in the HTTPS listener, enable it in Undertow:
<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>