can't inject @RequestScoped bean in ResteasyReactiveClientResponseFilter - javax.enterprise.context.ContextNotActiveException

See original GitHub issue

Describe the bug

On Quarkus resteasy reactive with a reactive rest client to make an external HTTP call.

It seems that the requestContext is not active when using a ResteasyReactiveClientResponseFilter

I made a simple project to reproduce this issue :
https://github.com/npoirey/quarkus_bugreport_reactiveclientfilter

Injecting a RequestScopedBeam works on a ResteasyReactiveClientRequestFilter but fails on a ResteasyReactiveClientResponseFilter

A similar bug was reported and fixed for the non reactive quarkus http client : https://github.com/quarkusio/quarkus/issues/8538 but this doesn’t work on the reactive version

Expected behavior

my 2 filters should work and print in console

MyRequestFilter
1
MyResponseFilter
1

Actual behavior

injecting the bean works in the request filter but fail with stacktrace on the response filter:

MyRequestFilter
1
MyResponseFilter
2022-08-18 10:58:51,006 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-0) HTTP Request to /hello failed, error id: b683fec2-0839-4c3b-92dc-bbfb8c314c87-1: javax.enterprise.context.ContextNotActiveException: RequestScoped context was not active when trying to obtain a bean instance for a client proxy of CLASS bean [class=org.acme.MyRequestScopedBean, id=4c0d454954d7fcba5081c8479a45d86d4c28035e]
	- you can activate the request context for a specific method using the @ActivateRequestContext interceptor binding
	at io.quarkus.arc.impl.ClientProxies.getDelegate(ClientProxies.java:53)
	at org.acme.MyRequestScopedBean_ClientProxy.arc$delegate(Unknown Source)
	at org.acme.MyRequestScopedBean_ClientProxy.getCounter(Unknown Source)
	at org.acme.MyResponseFilter.filter(MyResponseFilter.java:18)
	at org.acme.MyResponseFilter_Subclass.filter$$superforward1(Unknown Source)
	at org.acme.MyResponseFilter_Subclass$$function$$4.apply(Unknown Source)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:53)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:51)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(Unknown Source)
	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:40)
	at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
	at org.acme.MyResponseFilter_Subclass.filter(Unknown Source)
	at org.jboss.resteasy.reactive.client.spi.ResteasyReactiveClientResponseFilter.filter(ResteasyReactiveClientResponseFilter.java:10)
	at org.acme.MyResponseFilter_Subclass.filter$$superforward1(Unknown Source)
	at org.acme.MyResponseFilter_Subclass$$function$$3.apply(Unknown Source)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:53)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:51)
	at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(Unknown Source)
	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:40)
	at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
	at org.acme.MyResponseFilter_Subclass.filter(Unknown Source)
	at org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler.handle(ClientResponseFilterRestHandler.java:20)
	at org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler.handle(ClientResponseFilterRestHandler.java:9)
	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.invokeHandler(AbstractResteasyReactiveContext.java:218)
	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:140)
	at org.jboss.resteasy.reactive.client.impl.RestClientRequestContext$1.lambda$execute$0(RestClientRequestContext.java:276)
	at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264)
	at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:246)
	at io.vertx.core.impl.EventLoopContext.lambda$runOnContext$0(EventLoopContext.java:43)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:829)

How to Reproduce?

start the example project at https://github.com/npoirey/quarkus_bugreport_reactiveclientfilter

navigate to localhost:8080/hello

Output of uname -a or ver

No response

Output of java -version

No response

GraalVM version (if different from Java)

No response

Quarkus version or git rev

2.11.2.Final

Build tool (ie. output of mvnw --version or gradlew --version)

Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63) Maven home: C:\Users\npoirey.m2\wrapper\dists\apache-maven-3.8.6-bin\67568434\apache-maven-3.8.6 Java version: 11.0.15, vendor: Eclipse Adoptium, runtime: C:\sources\products\OpenJDK11U_11.0.15_10 Default locale: en_US, platform encoding: Cp1252 OS name: “windows 10”, version: “10.0”, arch: “amd64”, family: “windows”

Additional information

No response

Issue Analytics

  • State:closed
  • Created a year ago
  • Reactions:1
  • Comments:20 (19 by maintainers)

github_iconTop GitHub Comments

1reaction
geoandcommented, Aug 22, 2022

I think you actually might be correct… It doesn’t look like we automatically reactivate it… That’s very weird, I’ll have another look tomorrow.

0reactions
geoandcommented, Oct 18, 2022

This should be addressed in Quarkus 2.13 so I’ll close it. If it’s still an issue, feel free to comment / reopen

Read more comments on GitHub >

github_iconTop Results From Across the Web

cdi - javax.enterprise.context.ContextNotActiveException while ...
Any bean whose scope is other than @Dependent cannot be injected and used in classes with @Producer methods. On doing any of the...
Read more >
ContextNotActiveException: RequestScope - Google Groups
Caused by: javax.enterprise.context.ContextNotActiveException: interface javax.enterprise.context.RequestScoped at io.quarkus.
Read more >
CDI RequestScoped,Threading and the javax.enterprise ...
Accessing a CDI @RequestScoped bean: ... Inject; import javax.ws.rs. ... ContextNotActiveException: javax.enterprise.context.
Read more >
CDI request scope is not active during EJB meth... - JBoss.org
ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.RequestScoped. at org.jboss.as.ejb3.tx.
Read more >
WELD-001303: No active contexts for scope type javax ...
CDI Injection is failing for Request Scoped Bean - WELD-001303: No active contexts for scope type javax.enterprise.context.RequestScoped in EAP ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found