Could not use javax.servlet.http.HttpServletRequest after excluding tomcat from spring boot web

52 Views Asked by At

My web service is implementing webclient from springboot webflux. In the meantime, it is also using javax.servlet.http.HttpServletRequestin some functions (see below).

 @GetMapping("/app-info")
    fun appInfo(
        request: HttpServletRequest,
        @QueryParam("printAlerts") printAlerts: Boolean?,
    ): ResponseEntity<AppInfo>? {
        val context = request.servletContext
        val metrics: Map<String, Any> = AppMonitoring.getAppMetrics()

So, in the build.gradle.kts file, I implements both spring-boot-starter-webflux and spring-boot-starter-web.

However, our team decided to use Netty only. So I need to exclude tomcat. However, HttpservletRequest will be no longer available after excluding tomcat.

implementation("org.springframework.boot:spring-boot-starter-web") {
        exclude(group = "org.apache.logging.log4j", module = "*")
        exclude(group = "ch.qos.logback", module = "*")
        exclude(group = "org.slf4j", module = "*")
        exclude(group = "commons-logging", module = "*")
        exclude(group = "log4j", module = "*")
        exclude(group = "org.springframework.boot", module = "spring-boot-starter-tomcat")
    }

Is there a way that allow me to exclude tomcat completely but also using HttpservletRequest? I need HttpServletRequest object to get ServletContext which is an required argument for a library function.

I referenced this post. Reactive Spring does not support HttpServletRequest as parameter in REST endpoint? However, org.springframework.http.server.reactive.ServerHttpRequest is could not return what I need.

0

There are 0 best solutions below