Jaap, I suggest placing the PersonService in a separate bundle. Paul Spencer
> On Jan 25, 2023, at 3:57 PM, Jaap Gordijn <[email protected]> wrote: > > Paul, > > The Rest class and the PersonService are in the same bundle. > > Do you know if there are any examples out there that show > @JaxrsApplicationSelect in combination with DS? > It seems now that Application/@JaxrsApplicationBase ignores DS. > > -- Jaap > >> -----Original Message----- >> From: Paul Spencer <[email protected]> >> Sent: dinsdag 24 januari 2023 01:41 >> To: [email protected] >> Subject: Re: aries-jax-rs-whiteboard with @JaxrsApplicationSelect works not >> with DS >> >> - Does bundle:headers for the REST bundle have a required capability to the >> Person Service, foo.bar.PersonService in the example below. >> >> karaf@root> bundle:headers <REST_bundle_id> ... >> Require-Capability = >> osgi.service;effective:=active;filter:=(objectClass=foo.bar.PersonSer >> vice), >> ... >> >> karaf@root> >> >> >> My assumption is the requirement is missing, meaning the requirement in >> the REST bundle is not defined correctly. >> >> Paul Spencer >> >> >>> On Jan 23, 2023, at 5:44 PM, Jaap Gordijn <[email protected]> wrote: >>> >>> Paul, >>> >>> - scr is installed and started >>> - the person bundle started >>> - diag does not produce any output >>> >>> Best, >>> >>> -- Jaap >>> >>>> -----Original Message----- >>>> From: Paul Spencer <[email protected]> >>>> Sent: maandag 23 januari 2023 23:12 >>>> To: [email protected] >>>> 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 <[email protected]> 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 <[email protected]> >>>>>> Sent: maandag 23 januari 2023 21:19 >>>>>> To: [email protected] >>>>>> 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 <[email protected]> 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 <[email protected]> >>>>>>>> Sent: maandag 23 januari 2023 21:09 >>>>>>>> To: [email protected] >>>>>>>> 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 <[email protected]> >> 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 <[email protected]> >>>>>>>>>> Sent: maandag 23 januari 2023 18:59 >>>>>>>>>> To: [email protected] >>>>>>>>>> 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 <[email protected]> >>>> 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 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> >>>>> >>>>> >>> >>> > >
