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

Jan,

I did look on StackOverflow. What I found was mostly questions that
were years old and still without a clear answer, for example:
https://stackoverflow.com/questions/17098341/how-do-i-migrate-from-jersey-1-0-to-jersey-2-0
https://stackoverflow.com/questions/49053353/jersey-exception-mapper-not-handling-exceptions-in-resource-constructor

The general sentiment is that while Jersey 1.x was compact, 2.x became
(needlessly?) complex yet still does not implement all the features
from 1.x, or breaks them. And the migration guide is not nearly
comprehensive.

On Tue, Apr 7, 2020 at 3:29 PM Jan Supol <jan.supol@xxxxxxxxxx> wrote:
>
> General questions are fine to be asked here, but there is only about 80
> people subscribed to this mailing list. Asking on SO can get more
> attention, so it is more likely to get answered sooner.
>
> -- Jan
>
> On 06.04.2020 21:12, Martynas Jusevičius wrote:
> > Thanks Jan.
> >
> > I'll create issues for what I think are bugs.
> >
> > Where is the place to ask general questions? StackOverflow? Because I
> > have quite a few of them, now that I'm upgrading from 1.x.
> >
> > On Mon, Apr 6, 2020 at 5:15 PM Jan Supol <jan.supol@xxxxxxxxxx> wrote:
> >> 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
> >> _______________________________________________
> >> jersey-dev mailing list
> >> jersey-dev@xxxxxxxxxxx
> >> To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jersey-dev
> > _______________________________________________
> > jersey-dev mailing list
> > jersey-dev@xxxxxxxxxxx
> > To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jersey-dev
> _______________________________________________
> 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