javaservletsquarkus

Quarkus - problem accessing HttpServletRequest


I'm developing a Java application, using Quarkus 2.13.8.Final. There is a simple endpoint, in which I'd use the HttpServletRequest instance:

    @RequestScoped
    @Path("/rest/user")
    @Slf4j
    public class UserRestAdapter {
        @GET
        @Path("/canAccess")
        public Boolean canAccess(@Context HttpServletRequest request){
            log.info("canAccess, creating user context");
            if(request == null){
                log.info("canAccess, request is null");
            }
            return true;
        }
    }

However, calling that endpoint causes that exception:

javax.ws.rs.WebApplicationException: HTTP 400 Bad Request
        at org.jboss.resteasy.reactive.server.handlers.ParameterHandler.handle(ParameterHandler.java:66)
        at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:111)
        at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:142)
        at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:576)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
        at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
        at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: No bean found for required type [interface javax.ws.rs.container.ContainerRequestContext] and qualifiers [[]]
        at io.quarkus.arc.impl.InstanceImpl.bean(InstanceImpl.java:190)
        at io.quarkus.arc.impl.InstanceImpl.getInternal(InstanceImpl.java:211)
        at io.quarkus.arc.impl.InstanceImpl.get(InstanceImpl.java:97)
        at org.jboss.resteasy.reactive.server.core.parameters.ContextParamExtractor.extractParameter(ContextParamExtractor.java:100)
        at org.jboss.resteasy.reactive.server.handlers.ParameterHandler.handle(ParameterHandler.java:45)

How could I solve that issue?


Solution

  • The problem was caused by the usage of libraries quarkus-resteasy-reactive and quarkus-rest-client-reactive. After replacing these libraries with non-reactive versions, the endpoint correctly responded, as I wish.