Я пытался реализовать защищенный сервер с 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
})
}
}
Любая подсказка приветствуется.