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