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 <paulspen...@mindspring.com>
> Sent: dinsdag 24 januari 2023 01:41
> To: user@karaf.apache.org
> 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 <f...@gordijn.org> wrote:
> >
> > 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
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>
> >>>>>
> >>>
> >>>
> >
> >


Reply via email to