Paul, - scr is installed and started - the person bundle started - diag does not produce any output
Best, -- Jaap > -----Original Message----- > From: Paul Spencer <paulspen...@mindspring.com> > Sent: maandag 23 januari 2023 23:12 > To: user@karaf.apache.org > Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect works not > with DS > > Jaap, > 1) What bundle provides PersonService and what is its state, as reported by > bundle:list? > 2) What is the state, as reported by bundle:list, of your REST bundle. > > If any of the bundles are in a state of waiting, what does bundle:diag > <bundle_id> of the waiting bundle report? > > Is the feature scr installed, if not install it. > > Paul Spencer > > > > On Jan 23, 2023, at 3:38 PM, Jaap Gordijn <f...@gordijn.org> wrote: > > > > Paul, > > > > I have now minimized the code that I call via REST: > > > > @Reference(scope=ReferenceScope.PROTOTYPE_REQUIRED) > > private PersonService personService; > > > > @GET > > @Path("/test") > > public String test() { > > System.out.println("personService null" + (personService == > null)); > > return "test"; > > } > > > > The personService remains null, so no DI. > > > > I enabled DEBUG in the log. > > > > I only see DEBUG messages for " org.eclipse.jetty.util". > > Not for anything else. > > > > Nevertheless, feature:list | grep jax > > Results in: > > > > aries-jax-rs-whiteboard │ 2.0.2 │ │ > > Started │ aries-jax- > rs-2.0.2 │ > > aries-jax-rs-whiteboard-jackson │ 2.0.2 │ │ > > Started │ aries- > jax-rs-2.0.2 │ > > aries-jax-rs-whiteboard-jettison │ 2.0.2 │ │ > > Uninstalled │ > aries-jax-rs-2.0.2 │ > > aries-jax-rs-whiteboard-openapi │ 2.0.2 │ │ > > Uninstalled │ > aries-jax-rs-2.0.2 │ > > aries-jax-rs-whiteboard-rest-management │ 2.0.2 │ │ > > Uninstalled > │ aries-jax-rs-2.0.2 │ > > aries-jax-rs-whiteboard-shiro │ 2.0.2 │ │ > > Uninstalled │ aries- > jax-rs-2.0.2 │ > > jaxb │ 2.3.2.3 │ │ > > Uninstalled │ specs-4.4.3 > │ > > jaxrs │ 2.1.0 │ │ > > Uninstalled │ specs-4.4.3 > │ > > jaxws │ 2.3.0 │ │ > > Uninstalled │ specs-4.4.3 > │ > > jackson-jaxrs │ 2.14.1 │ │ > > Uninstalled │ specs-4.4.3 > │ > > cxf-jaxb │ 3.5.5 │ │ > > Uninstalled │ cxf-3.5.5 > │ > > cxf-jaxws │ 3.5.5 │ │ > > Uninstalled │ cxf-3.5.5 > │ > > cxf-jaxrs │ 3.5.5 │ │ > > Started │ cxf-3.5.5 > │ > > cxf-databinding-jaxb │ 3.5.5 │ │ > > Uninstalled │ cxf-3.5.5 > │ > > cxf-jaxrs-cdi │ 3.5.5 │ │ > > Uninstalled │ cxf-3.5.5 > │ > > karaf@root()> > > > > This gives me the impression that the whitenboard stuff is working. > > > > -- Jaap > > > >> -----Original Message----- > > > > > >> From: Paul Spencer <pau...@me.com> > >> Sent: maandag 23 januari 2023 21:19 > >> To: user@karaf.apache.org > >> Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect > >> works not with DS > >> > >> Jaap, > >> Something is missing. The @Referenece should prevent the component > >> from becoming Active when a PeopleService does not exist. > >> Look in Karaf.log for clues. > >> > >> Paul Spencer > >> > >>> On Jan 23, 2023, at 3:14 PM, Jaap Gordijn <f...@gordijn.org> wrote: > >>> > >>> Paul, > >>> > >>> I tried also the @Reference annotation. > >>> This doesn't work, the variable remains null. > >>> No injection is happening. > >>> > >>> -- Jaap > >>> > >>>> -----Original Message----- > >>>> From: Paul Spencer <paulspen...@mindspring.com> > >>>> Sent: maandag 23 januari 2023 21:09 > >>>> To: user@karaf.apache.org > >>>> Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect > >>>> works not with DS > >>>> > >>>> Jaap, > >>>> In the code I posted, there was not constructor. I moved the > >>>> injection of personService to an @Reference annotated field. The > >>>> @Activator annotation is for a method, which you may not need based > >>>> on > >> your example. > >>>> > >>>> Paul Spencer > >>>> > >>>> > >>>>> On Jan 23, 2023, at 2:30 PM, Jaap Gordijn <f...@gordijn.org> wrote: > >>>>> > >>>>> Hi Paul, > >>>>> > >>>>> That constructor is called, but only if I disable > @@JaxrsApplicationSelect. > >>>>> > >>>>> If I enable it, only the default constructor is called (Rest() in my > >>>>> case. > >>>>> And no DS. > >>>>> > >>>>> -- Jaap > >>>>> > >>>>>> -----Original Message----- > >>>>>> From: Paul Spencer <paulspen...@mindspring.com> > >>>>>> Sent: maandag 23 januari 2023 18:59 > >>>>>> To: user@karaf.apache.org > >>>>>> Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect > >>>>>> works not with DS > >>>>>> > >>>>>> Jaap, > >>>>>> Your @Activate annotation is incorrect. > >>>>>> Try the following. > >>>>>> > >>>>>> > >>>>>> … > >>>>>> public class Rest() { > >>>>>> > >>>>>> @Reference > >>>>>> private PersonService personService; > >>>>>> > >>>>>> @Activate > >>>>>> public void activate(Map <String,?> properties) { ... > >>>>>> } > >>>>>> > >>>>>> } > >>>>>> > >>>>>> Paul Spencer > >>>>>> > >>>>>> > >>>>>>> On Jan 23, 2023, at 12:40 PM, Jaap Gordijn <f...@gordijn.org> > wrote: > >>>>>>> > >>>>>>> Hi, > >>>>>>> > >>>>>>> I use an Application object (with @JaxrsApplicationSelect), > >>>>>>> injection via DS does not work: > >>>>>>> > >>>>>>> @Component(service = Rest.class, scope = > ServiceScope.PROTOTYPE) > >>>>>>> @JaxrsResource @JaxrsApplicationSelect("(" + > >>>>>>> JaxrsWhiteboardConstants.JAX_RS_NAME + > >>>>>>> "=MyApplication)") > >>>>>>> @JSONRequired > >>>>>>> @Produces(MediaType.APPLICATION_JSON) > >>>>>>> public class Rest { > >>>>>>> > >>>>>>> private PersonService personService; > >>>>>>> > >>>>>>> /* > >>>>>>> public Rest() { > >>>>>>> System.out.println("Constructing REST"); this.personService = > >>>>>>> new PersonServiceImpl(); } */ > >>>>>>> > >>>>>>> @Activate > >>>>>>> public Rest(final @Reference PersonService personService) { > >>>>>>> System.out.println("Constructing REST"); this.personService = > >>>>>>> personService; } > >>>>>>> > >>>>>>> @GET > >>>>>>> @Path("/person") > >>>>>>> public List<PersonDto> listPersons() { > >>>>>>> return personService.select(); } > >>>>>>> > >>>>>>> @GET > >>>>>>> @Path("/test") > >>>>>>> public String test() { > >>>>>>> return "test"; > >>>>>>> } > >>>>>>> } > >>>>>>> > >>>>>>> The @Activate constructor is not called. If I enable the Rest() > >>>>>>> constructor that one is called. > >>>>>>> if I disable @JaxrsApplicationSelect, the personService is injected. > >>>>>>> > >>>>>>> It seems that once an Application class is used (see below), DS > >>>>>>> is not working. > >>>>>>> This leads to the question what I have to set up for the > >>>>>>> Application > >>>> object: > >>>>>>> > >>>>>>> @Component(service=Application.class, property = > >>>>>>> {"servlet.init.hide-service-list-page=true"} ) > >>>>>>> @JaxrsApplicationBase("example") > >>>>>>> @JaxrsName("MyApplication") > >>>>>>> public class MyApplication extends Application { > >>>>>>> > >>>>>>> public Set<Class<?>> getClasses() { > >>>>>>> HashSet<Class<?>> set = new HashSet<Class<?>>(); > >>>>>>> set.add(Rest.class); > >>>>>>> return set; > >>>>>>> } > >>>>>>> > >>>>>>> } > >>>>>>> > >>>>>>> Jax-rs-whiteboard 2.02 > >>>>>>> Karaf 4.4.3 > >>>>>>> > >>>>>>> Thanks, > >>>>>>> > >>>>>>> -- Jaap > >>>>>>> > >>>>>>> > >>>>> > >>>>> > >>> > >>> > > > >