Configuring the Server for HTTP/2

    The first step to doing so is setting the supported HTTP version is the server configuration:

    Enabling HTTP/2 Support

    With this configuration in place Micronaut will enable support for the protocol (see HTTP/2 over cleartext) which is fine for development.

    Since browsers don’t support h2c and in general (the h2 protocol) is recommended for production you should enable HTTPS support support. For development this can be done with:

    1. micronaut:
    2. ssl:
    3. enabled: true
    4. buildSelfSigned: true

    For production, see the section of the documentation.

    Note that if you deployment environment is JDK 8 or if you wish for improved support for OpenSSL you will need to define the following dependencies on Netty Tomcat Native:

    1. runtimeOnly("io.netty:netty-tcnative:2.0.29.Final")
    1. runtimeOnly("io.netty:netty-tcnative-boringssl-static:2.0.29.Final")
    1. <dependency>
    2. <groupId>io.netty</groupId>
    3. <artifactId>netty-tcnative-boringssl-static</artifactId>
    4. <version>2.0.29.Final</version>

    In addition to a dependency on the appropriate native library for your architecture. For example:

    Configuring Tomcat Native

    HTTP/2 Clients

    By default Micronaut’s HTTP client is configured to support HTTP 1.1. To enable support for HTTP/2 you can do so globally by setting the supported HTTP version if configuration:

    Enabling HTTP/2 in Clients

    1. micronaut:
    2. http:
    3. client:
    4. http-version: 2.0

    Or by specifying the HTTP version to use when injecting the client:

    Injecting a HTTP/2 Client

    1. @Inject
    2. @Client(httpVersion=HttpVersion.HTTP_2_0)