deltaspike-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ioan Eugen Stan <stan.ieu...@gmail.com>
Subject Re: Jetty/Jersey/Injection
Date Sat, 22 Nov 2014 09:35:19 GMT
Hello,

I think you can find some insight here [1]. You will need to bridge
cdi and hk2 injecction frameworks.

[1] http://stackoverflow.com/questions/21295589/cdi-interceptor-injected-into-a-jersey-rs-serviceresource-not-working

2014-11-21 23:22 GMT+02:00 Jason Porter <lightguard.jp@gmail.com>:
> I have to say I'm not familiar at all with using Jetty this way. Is there a
> reason for doing this instead of 1) starting the server and deploying a WAR
> or 2) using a WebAppContext?
>
> On Fri, Nov 21, 2014 at 12:42 PM, Deven Phillips <deven.phillips@gmail.com>
> wrote:
>
>> OK, I think that I have a project which can run, but I am still getting
>> NPEs for the injected resource.
>>
>> On Fri, Nov 21, 2014 at 2:13 PM, Deven Phillips <deven.phillips@gmail.com>
>> wrote:
>>
>> > And by working, I mean it compiles.. I do not mean that the Dependency
>> > Injection is working.
>> >
>> > On Fri, Nov 21, 2014 at 2:13 PM, Deven Phillips <
>> deven.phillips@gmail.com>
>> > wrote:
>> >
>> >> OK, I created a branch called DeltaSpike which is now working... Sorry
>> >> for wasting your time with a broken source tree!!
>> >>
>> >> Deven
>> >>
>> >> On Fri, Nov 21, 2014 at 2:04 PM, Deven Phillips <
>> deven.phillips@gmail.com
>> >> > wrote:
>> >>
>> >>> I've never needed an "Application" class before while using Guice or
>> >>> manually configuring JAX-RS with Jetty.. I will check to see if that
>> makes
>> >>> a difference...
>> >>>
>> >>> Deven
>> >>>
>> >>> On Fri, Nov 21, 2014 at 1:37 PM, Jason Porter <lightguard.jp@gmail.com
>> >
>> >>> wrote:
>> >>>
>> >>>> Maybe I missed something, but why are you going through all the
>> trouble
>> >>>> of
>> >>>> starting the server and setting everything up manually? I still
don't
>> >>>> see
>> >>>> any JAX-RS config or JAX-RS Application class.
>> >>>>
>> >>>> On Fri, Nov 21, 2014 at 11:30 AM, Deven Phillips <
>> >>>> deven.phillips@gmail.com>
>> >>>> wrote:
>> >>>>
>> >>>> > I see what happened... I meant to create a separate branch
for a
>> >>>> WeldSE
>> >>>> > implementation and failed.. Checkout the tag 'deltaspike'
>> >>>> >
>> >>>> > Deven
>> >>>> >
>> >>>> > On Fri, Nov 21, 2014 at 1:27 PM, Deven Phillips <
>> >>>> deven.phillips@gmail.com>
>> >>>> > wrote:
>> >>>> >
>> >>>> > > John,
>> >>>> > >
>> >>>> > >     Have a look at com.zanclus.example.api.GetServerTime
>> >>>> > >
>> >>>> > > Deven
>> >>>> > >
>> >>>> > > On Fri, Nov 21, 2014 at 11:41 AM, John D. Ament <
>> >>>> john.d.ament@gmail.com>
>> >>>> > > wrote:
>> >>>> > >
>> >>>> > >> Deven,
>> >>>> > >>
>> >>>> > >> Looks like there's no JAX-RS resources in this project...
>> >>>> > >>
>> >>>> > >> On Fri Nov 21 2014 at 10:08:34 AM Deven Phillips <
>> >>>> > >> deven.phillips@gmail.com>
>> >>>> > >> wrote:
>> >>>> > >>
>> >>>> > >> > I finally got around to trying to put together
an example
>> project
>> >>>> > which
>> >>>> > >> I
>> >>>> > >> > could share publicly...
>> >>>> > >> >
>> >>>> > >> > https://github.com/InfoSec812/JettyJerseyWeldExample
>> >>>> > >> >
>> >>>> > >> > I'm hoping I can figure out how to get DeltaSpike/Weld
to work
>> >>>> > injecting
>> >>>> > >> > dependencies into my JAX-RS POJOs...
>> >>>> > >> >
>> >>>> > >> > On Mon, Nov 17, 2014 at 9:58 AM, Deven Phillips
<
>> >>>> > >> deven.phillips@gmail.com>
>> >>>> > >> > wrote:
>> >>>> > >> >
>> >>>> > >> > > Creating the ServletContextHandler now looks
like:
>> >>>> > >> > >
>> >>>> > >> > >         ServletContextHandler handler =
new
>> >>>> ServletContextHandler();
>> >>>> > >> > >         handler.setContextPath("/");
>> >>>> > >> > >         handler.addFilter(ProxyAuthFilter.class,
"/*",
>> >>>> > >> > > EnumSet.allOf(DispatcherType.class));
>> >>>> > >> > >         handler.addEventListener(new
>> >>>> BeanManagerResourceBindingList
>> >>>> > >> > ener());
>> >>>> > >> > >         handler.addEventListener(new
>> >>>> CdiServletRequestListener());
>> >>>> > >> > >         handler.addServlet(new ServletHolder(new
>> >>>> > ServletContainer(new
>> >>>> > >> > > PackagesResourceConfig(config.restPackage()))),
"/*");
>> >>>> > >> > >
>> >>>> > >> > >
>> >>>> > >> > > And the exception is an NPE in one of my
JAX-RS POJOs where
>> it
>> >>>> tries
>> >>>> > >> to
>> >>>> > >> > > access a supposedly injected resource.
>> >>>> > >> > >
>> >>>> > >> > > DEven
>> >>>> > >> > >
>> >>>> > >> > > On Mon, Nov 17, 2014 at 9:54 AM, Deven Phillips
<
>> >>>> > >> > deven.phillips@gmail.com>
>> >>>> > >> > > wrote:
>> >>>> > >> > >
>> >>>> > >> > >> OK, the @Target exception was a classpath
problem and I have
>> >>>> > resolved
>> >>>> > >> > it,
>> >>>> > >> > >> but I am still getting NullPointerExceptions
because nothing
>> >>>> is
>> >>>> > >> getting
>> >>>> > >> > >> injected into my JAX-RS classes...
>> >>>> > >> > >>
>> >>>> > >> > >> On Mon, Nov 17, 2014 at 9:28 AM, Deven
Phillips <
>> >>>> > >> > deven.phillips@gmail.com
>> >>>> > >> > >> > wrote:
>> >>>> > >> > >>
>> >>>> > >> > >>> So, I just tried this:
>> >>>> > >> > >>>
>> >>>> > >> > >>>     WebAppContext ctx = new
>> >>>> WebAppContext("cc-backend-sungardas",
>> >>>> > >> > "/");
>> >>>> > >> > >>>     ctx.addFilter(ProxyAuthFilter.class,
"/*",
>> >>>> > >> > >>> EnumSet.allOf(DispatcherType.class));
>> >>>> > >> > >>>     ctx.addServlet(new ServletHolder(new
>> ServletContainer(new
>> >>>> > >> > >>> PackagesResourceConfig(config.restPackage()))),
"/*");
>> >>>> > >> > >>>     ctx.addEventListener(new
>> >>>> > BeanManagerResourceBindingListener());
>> >>>> > >> > >>>
>> >>>> > >> > >>> and I got the following Exceptions:
>> >>>> > >> > >>>
>> >>>> > >> > >>>     [DEBUG] 2014-11-17 09:25:44,821
[main]
>> >>>> > >> > org.jboss.weld.Reflection:82
>> >>>> > >> > >>> - WELD-000620: interface javax.ws.rs.core.Context
is not
>> >>>> declared
>> >>>> > >> > >>> @Target(METHOD, FIELD, PARAMETER,
TYPE). Weld will use this
>> >>>> > >> annotation,
>> >>>> > >> > >>> however this may make the application
unportable.
>> >>>> > >> > >>>     Exception in thread "main"
>> >>>> > >> > >>> org.jboss.weld.exceptions.DefinitionException:
Exception
>> List
>> >>>> > with 1
>> >>>> > >> > >>> exceptions:
>> >>>> > >> > >>>     Exception 0 :
>> >>>> > >> > >>>     javax.enterprise.event.ObserverException
>> >>>> > >> > >>>     at
>> >>>> > sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>> >>>> > >> > >>> Method)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> sun.reflect.NativeConstructorAccessorImpl.newInstance(
>> >>>> > >> > NativeConstructorAccessorImpl.java:57)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
>> >>>> > >> > DelegatingConstructorAccessorImpl.java:45)
>> >>>> > >> > >>>     at
>> >>>> > >> java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>> >>>> > >> > >>>     at java.lang.Class.newInstance(Class.java:379)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.security.NewInstanceAction.run(
>> >>>> > >> > NewInstanceAction.java:33)
>> >>>> > >> > >>>     at java.security.AccessController.doPrivileged(Native
>> >>>> Method)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.injection.Exceptions.rethrowException(
>> >>>> > >> > Exceptions.java:40)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.injection.Exceptions.rethrowException(
>> >>>> > >> > Exceptions.java:78)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.injection.MethodInjectionPoint.
>> >>>> > >> > invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:98)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.event.ObserverMethodImpl.sendEvent(
>> >>>> > >> > ObserverMethodImpl.java:271)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(
>> >>>> > >> > ExtensionObserverMethodImpl.java:121)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.event.ObserverMethodImpl.sendEvent(
>> >>>> > >> > ObserverMethodImpl.java:258)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.event.ObserverMethodImpl.notify(
>> >>>> > >> > ObserverMethodImpl.java:237)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.event.ObserverNotifier.notifyObserver(
>> >>>> > >> > ObserverNotifier.java:174)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.event.ObserverNotifier.notifyObservers(
>> >>>> > >> > ObserverNotifier.java:133)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.event.ObserverNotifier.fireEvent(
>> >>>> > >> > ObserverNotifier.java:107)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.bootstrap.events.AbstractContainerEvent.
>> >>>> > >> > fire(AbstractContainerEvent.java:54)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>>
>> >>>> > >>
>> >>>> org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(
>> >>>> > >> > AbstractDefinitionContainerEvent.java:42)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.
>> >>>> > >> > fire(AfterBeanDiscoveryImpl.java:59)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>>
>> >>>> > >>
>> >>>> org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:412)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(
>> >>>> > >> > WeldBootstrap.java:83)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>>
>> >>>> > >>
>> >>>> org.jboss.weld.bootstrap.api.helpers.ForwardingBootstrap.deployBeans(
>> >>>> > >> > ForwardingBootstrap.java:63)
>> >>>> > >> > >>>     at
>> >>>> > org.jboss.weld.environment.se.Weld.initialize(Weld.java:133)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.apache.deltaspike.cdise.weld.WeldContainerControl.
>> >>>> > >> > boot(WeldContainerControl.java:65)
>> >>>> > >> > >>>     at com.sungardas.cc.edison.Main.start(Main.java:171)
>> >>>> > >> > >>>     at com.sungardas.cc.edison.Main.main(Main.java:68)
>> >>>> > >> > >>>     Caused by: java.lang.NoSuchMethodError:
>> >>>> > >> > >>> org.jboss.weld.context.AbstractUnboundContext.<init>(Z)V
>> >>>> > >> > >>>     at
>> >>>> > >> > >>>
>> org.jboss.weld.environment.se.contexts.ThreadContext.<init>(
>> >>>> > >> > ThreadContext.java:40)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.environment.se.WeldSEBeanRegistrant.
>> >>>> > >> > registerWeldSEContexts(WeldSEBeanRegistrant.java:49)
>> >>>> > >> > >>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> >>>> Method)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> sun.reflect.NativeMethodAccessorImpl.invoke(
>> >>>> > >> > NativeMethodAccessorImpl.java:57)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> >>>> > >> > DelegatingMethodAccessorImpl.java:43)
>> >>>> > >> > >>>     at java.lang.reflect.Method.invoke(Method.java:606)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.injection.MethodInjectionPoint.
>> >>>> > >> > invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:90)
>> >>>> > >> > >>>     ... 17 more
>> >>>> > >> > >>>
>> >>>> > >> > >>>     at
>> >>>> > >> > >>>
>> >>>> > >>
>> >>>> org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(
>> >>>> > >> > AbstractDefinitionContainerEvent.java:44)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.
>> >>>> > >> > fire(AfterBeanDiscoveryImpl.java:59)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>>
>> >>>> > >>
>> >>>> org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:412)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(
>> >>>> > >> > WeldBootstrap.java:83)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>>
>> >>>> > >>
>> >>>> org.jboss.weld.bootstrap.api.helpers.ForwardingBootstrap.deployBeans(
>> >>>> > >> > ForwardingBootstrap.java:63)
>> >>>> > >> > >>>     at
>> >>>> > org.jboss.weld.environment.se.Weld.initialize(Weld.java:133)
>> >>>> > >> > >>>     at
>> >>>> > >> > >>> org.apache.deltaspike.cdise.weld.WeldContainerControl.
>> >>>> > >> > boot(WeldContainerControl.java:65)
>> >>>> > >> > >>>     at com.sungardas.cc.edison.Main.start(Main.java:171)
>> >>>> > >> > >>>     at com.sungardas.cc.edison.Main.main(Main.java:68)
>> >>>> > >> > >>>
>> >>>> > >> > >>> On Mon, Nov 17, 2014 at 9:09 AM,
Deven Phillips <
>> >>>> > >> > >>> deven.phillips@gmail.com> wrote:
>> >>>> > >> > >>>
>> >>>> > >> > >>>> This is embedded Jetty 9.2.x
and Weld version 1.1.9.Final
>> >>>> booted
>> >>>> > >> using
>> >>>> > >> > >>>> DeltaSpike 1.0.2... I have seen
that linked document, but
>> I
>> >>>> don't
>> >>>> > >> see
>> >>>> > >> > how
>> >>>> > >> > >>>> to translate that to embedded
Jetty's startup...
>> Normally, I
>> >>>> > would
>> >>>> > >> do
>> >>>> > >> > >>>> something like:
>> >>>> > >> > >>>>
>> >>>> > >> > >>>>     ServletContextHandler ctx
= new
>> >>>> ServletContextHandler("/");
>> >>>> > >> > >>>>     ctx.addFilter(AuthFilter.class,
"/*",
>> >>>> > >> > >>>> EnumSet.allOf(DispatcherType.class)
>> >>>> > >> > >>>>     ctx.addServlet(new ServletContainer(new
>> >>>> > >> > >>>> PackagesResourceConfig(restPackage));
>> >>>> > >> > >>>>     ctx.addEventListener(new
CdiRequestListener())
>> >>>> > >> > >>>>
>> >>>> > >> > >>>> Where in there would I put in
the BeanManager and the
>> >>>> > >> > >>>> ManagerObjectFactory? Or should
I follow the lines below
>> >>>> that
>> >>>> > where
>> >>>> > >> > they
>> >>>> > >> > >>>> talk about using a listener
to automatically bind the
>> >>>> > BeanManager?
>> >>>> > >> > >>>>
>> >>>> > >> > >>>> Thanks in advance!!
>> >>>> > >> > >>>>
>> >>>> > >> > >>>> Deven
>> >>>> > >> > >>>>
>> >>>> > >> > >>>> On Sun, Nov 16, 2014 at 10:39
PM, Jason Porter <
>> >>>> > >> > lightguard.jp@gmail.com
>> >>>> > >> > >>>> > wrote:
>> >>>> > >> > >>>>
>> >>>> > >> > >>>>> Which version of weld?
>> >>>> > >> > >>>>>
>> >>>> > >> > >>>>> https://docs.jboss.org/weld/reference/latest/en-US/html/
>> >>>> > >> > environments.html#_jetty
>> >>>> > >> > >>>>> should be all you need for
weld in jetty.
>> >>>> > >> > >>>>> On Sun, Nov 16, 2014 at
20:28 Deven Phillips <
>> >>>> > >> > deven.phillips@gmail.com
>> >>>> > >> > >>>>> >
>> >>>> > >> > >>>>> wrote:
>> >>>> > >> > >>>>>
>> >>>> > >> > >>>>> > Hi all,
>> >>>> > >> > >>>>> >
>> >>>> > >> > >>>>> >
>> >>>> > >> > >>>>> >     I'm trying really
hard to figure out how to make
>> >>>> > >> > DeltaSpike/Weld
>> >>>> > >> > >>>>> work
>> >>>> > >> > >>>>> > with Jetty and Jersey...
I can get the Jersey servlet
>> to
>> >>>> load,
>> >>>> > >> but
>> >>>> > >> > I
>> >>>> > >> > >>>>> cannot
>> >>>> > >> > >>>>> > get any of the dependencies
to be injected... My goal
>> is
>> >>>> to
>> >>>> > >> replace
>> >>>> > >> > >>>>> > Google's Guice DI framework
so that I can achieve
>> better
>> >>>> test
>> >>>> > >> > >>>>> coverage and
>> >>>> > >> > >>>>> > decoupling... I'm having
a very hard time finding any
>> >>>> > >> documentation
>> >>>> > >> > >>>>> for
>> >>>> > >> > >>>>> > wiring this up..
>> >>>> > >> > >>>>> >
>> >>>> > >> > >>>>> > Any help would be appreciated!
>> >>>> > >> > >>>>> >
>> >>>> > >> > >>>>> > Deven
>> >>>> > >> > >>>>> >
>> >>>> > >> > >>>>>
>> >>>> > >> > >>>>
>> >>>> > >> > >>>>
>> >>>> > >> > >>>
>> >>>> > >> > >>
>> >>>> > >> > >
>> >>>> > >> >
>> >>>> > >>
>> >>>> > >
>> >>>> > >
>> >>>> >
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Jason Porter
>> >>>> http://en.gravatar.com/lightguardjp
>> >>>>
>> >>>
>> >>>
>> >>
>> >
>>
>
>
>
> --
> Jason Porter
> http://en.gravatar.com/lightguardjp



-- 
Ioan Eugen Stan
0720 898 747

Mime
View raw message