Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jersey-dev] Cannot @Inject into ExceptionMapper

Hi,

This mailing list's primary purpose is not for solving bugs, rather it should be used for a discussion and announcements.

Feel free to file us an issue on our bug tracker https://github.com/eclipse-ee4j/jersey/issues and provide a reproducer, best in a form of JerseyTest or a standalone github project.

I tried to reproduce the issue, but no success. What comes on my mind right now is that you try to inject out of the Request scope, or I have seen a similar issue when multiple classloaders were involved.

Thanks,

Jan

On 04.04.2020 13:09, Martynas Jusevičius wrote:
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
_______________________________________________
jersey-dev mailing list
jersey-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jersey-dev


Back to the top