[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jersey-dev] Cannot @Inject into ExceptionMapper
|
TemplateCallProvider is a Factory:
@Provider
public class TemplateCallProvider implements Factory<TemplateCall>
On Sat, Apr 4, 2020 at 1:05 PM Martynas Jusevičius
<martynas@xxxxxxxxxxxxx> wrote:
>
> Hi,
>
> I'm attempting to inject some RequestScoped objects into an ExceptionMapper:
>
> public class NotFoundExceptionMapper extends ExceptionMapperBase
> implements ExceptionMapper<NotFoundException>
> {
>
> @Inject TemplateCall templateCall;
> ...
>
> In my ResourceConfig I have
>
> register(new AbstractBinder()
> {
> @Override
> protected void configure()
> {
> bindFactory(TemplateCallProvider.class).to(TemplateCall.class).
> proxy(true).proxyForSameScope(false).in(RequestScoped.class);
> }
> });
> ...
> register(new NotFoundExceptionMapper());
> // register(NotFoundExceptionMapper.class); // also tried this, same effect
>
> However I get an error when NotFoundException should be mapped:
>
> 04-Apr-2020 10:57:22.213 SEVERE [main]
> org.apache.catalina.core.ApplicationContext.log Servlet.init() for
> servlet [com.atomgraph.server.Application] threw exception
> MultiException stack 1 of 2
> java.lang.RuntimeException: java.lang.InstantiationException:
> com.atomgraph.processor.util.TemplateCall_$$_jvstb48_0
> at
> org.jvnet.hk2.internal.ProxyUtilities$4.run(ProxyUtilities.java:157)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.jvnet.hk2.internal.ProxyUtilities.secureCreate(ProxyUtilities.java:128)
> at
> org.jvnet.hk2.internal.ProxyUtilities.generateProxy(ProxyUtilities.java:194)
> at
> org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2074)
> at
> org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:666)
> at
> org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:54)
> at
> org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:988)
> at
> org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:998)
> at
> org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:976)
> at
> org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.inject(AbstractHk2InjectionManager.java:202)
> at
> org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.inject(ImmediateHk2InjectionManager.java:30)
> ...
> MultiException stack 2 of 2
> java.lang.IllegalArgumentException: While attempting to create
> a Proxy for com.atomgraph.processor.util.TemplateCall in scope
> org.glassfish.jersey.process.internal.RequestScoped an error occured
> while creating the proxy
> at
> org.jvnet.hk2.internal.ProxyUtilities.generateProxy(ProxyUtilities.java:201)
> at
> org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2074)
> at
> org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:666)
> at
> org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:54)
> at
> org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:988)
> at
> org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:998)
> at
> org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:976)
> at
> org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.inject(AbstractHk2InjectionManager.java:202)
> at
> org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.inject(ImmediateHk2InjectionManager.java:30)
> ...
>
> Looking at similar problems online, my guess is that it has to do with
> a RequestScoped object being injected into Singleton. However I
> haven't been able to find a solution yet.
>
> Thanks.
>
>
> Martynas