suresh
11/04/2025, 12:37 AMJetty engine. Calling call.request.servletRequestAttributes from the call interceptor throws the following error. Any idea why it’s not set for the Jetty engine?suresh
11/04/2025, 12:38 AMWrapped by: java.lang.IllegalStateException: No instance for key AttributeKey: ServletRequestAttributes
at io.ktor.util.Attributes.get(Attributes.kt:77)
at io.ktor.util.AttributesJvmBase.get(AttributesJvm.kt:17)
at io.ktor.server.servlet.jakarta.AttributesKt.getServletRequestAttributes(Attributes.kt:19)suresh
11/04/2025, 12:40 AMintercept(ApplicationCallPipeline.Call) {
}Aleksei Tirman [JB]
11/04/2025, 7:08 AMembeddedServer(Jetty, port = 9000) {
intercept(ApplicationCallPipeline.Call) {
println("Attribs: ${context.request.servletRequestAttributes}")
}
routing {
get("/test") {
call.respondText("OK")
}
}
}.start(wait = true)
The stdout:
Attribs: {jakarta.servlet.async.path_info=/test, jakarta.servlet.async.request_uri=/test}suresh
11/04/2025, 6:40 PMsuresh
11/04/2025, 6:40 PMplugins {
kotlin("jvm") version "2.2.20"
id("io.ktor.plugin") version "3.3.1"
}suresh
11/04/2025, 6:40 PMimport io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.jetty.jakarta.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.servlet.jakarta.*
fun main(args: Array<String>) {
embeddedServer(Jetty, port = 9000) {
intercept(ApplicationCallPipeline.Call) {
println("Attribs: ${context.request.servletRequestAttributes}")
}
routing {
get("/test") {
call.respondText("OK")
}
}
}.start(wait = true)
}suresh
11/04/2025, 6:41 PM$ curl -I <http://localhost:9000/test>
HTTP/1.1 500 Server Error
Content-Length: 0
2025-11-04 10:41:19.778 [ktor-jetty-9000-7] ERROR io.ktor.server.Application - Unhandled: GET - /test
java.lang.IllegalStateException: No instance for key AttributeKey: ServletRequestAttributes
at io.ktor.util.Attributes.get(Attributes.kt:77)
at io.ktor.util.AttributesJvmBase.get(AttributesJvm.kt:17)
at io.ktor.server.servlet.jakarta.AttributesKt.getServletRequestAttributes(Attributes.kt:19)
at dev.suresh.ApplicationKt$main$1$1.invokeSuspend(Application.kt:13)
at dev.suresh.ApplicationKt$main$1$1.invoke(Application.kt)
at dev.suresh.ApplicationKt$main$1$1.invoke(Application.kt)
at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)suresh
11/04/2025, 7:48 PMAleksei Tirman [JB]
11/05/2025, 11:06 AM