Javalin реализует HTTP2 с предупреждением Не удалось hpack кодировать HTTP / 2.0 - PullRequest
0 голосов
/ 17 апреля 2020

Я пытался реализовать защищенный сервер с javalin и следуя примерам кодов на https://github.com/tipsy/javalin-http2-example с некоторыми дополнительными кодами.

Когда я пытаюсь получить к нему доступ, это приводит к бесконечной загрузке без какой-либо ответ от сервера. И в журналах сервера он возвращает несколько предупреждений:

[qtp1783966110-17] WARN org.eclipse.jetty.server.HttpChannelState - org.eclipse.jetty.http2.hpack.HpackException$SessionException: Could not hpack encode HTTP/2.0{s=404,h=3,cl=-1}

Вот код, который я использую:

private fun createHttp2Server(develop: Boolean): Server {
    val filepath = "${CONFIG_PATH}/keystore.jks"
    val alpn = ALPNServerConnectionFactory().apply {
        defaultProtocol = "h2"
    }

    val sslContextFactory = SslContextFactory.Server().apply {
        keyStorePath = filepath
        setKeyStorePassword("password")
        cipherComparator = HTTP2Cipher.COMPARATOR
        provider = "Conscrypt"
    }

    val ssl = SslConnectionFactory(sslContextFactory, alpn.protocol)

    val httpsConfig = HttpConfiguration().apply {
        sendServerVersion = false
        secureScheme = "https"
        securePort = if (develop) DPORT2 else PORT2

        addCustomizer(SecureRequestCustomizer())
    }

    val http2 = HTTP2ServerConnectionFactory(httpsConfig)
    val fallback = HttpConnectionFactory(httpsConfig)

    return Server().apply {
        //HTTP/1.1 Connector
        addConnector(ServerConnector(server).apply {
            port = if (develop) DPORT else PORT
        })
        // HTTP/2 Connector
        addConnector(ServerConnector(server, ssl, alpn, http2, fallback).apply {
            port = if (develop) DPORT2 else PORT2
        })
    }
}

Любая подсказка приветствуется.

...